2017-08-11 12 views
0

は、ここで私は、条件NG-クラスを作成した上で、私のHTML入力タグである私の$ ctrl.flagが真のNG-クラスが適用されるはずですときng-classが入力タグに適用されないのはなぜですか?

<input type="text" class="form-control" placeholder="label" name="label" 
    ng-required="true" ng-class="{ missing: $ctrl.flag=='true'}" 
    ng-model="$ctrl.DataToSend.label[$ctrl.language]" /> 

そして、ここでは私のCSS

.missing {border: solid 1px red;} 

ですしかしそれは起こっていない。どうして?

+0

た。!! – Prabhakaran

+0

Prabhakaranに返信してくれてありがとうStackOverflowを新しくしてくれますかフィドルかcodepenを追加する方法を教えてください –

答えて

0

適用するクラスを引用符で囲む必要があります。それ以外の場合は、クラス名の文字列が含まれているAngularJS変数を探します。

また、条件が必ずfalseでないことを確認してください。あなたの場合、$ctrl.flag変数はブール値を格納するかもしれません。 $ctrl.flag

更新されたコード:だから、あなたに条件を変更する

<input type="text" class="form-control" placeholder="label" name = "label" ng-required="true" ng-class="{ 'missing': $ctrl.flag }" ng-model = "$ctrl.DataToSend.label[$ctrl.language]"/> 
+0

Simonに感謝していますが、すでに試してみましたが、うまくいきませんでした:( –

+0

@VishalArthamwarあなたの状態は常にfalseです。変数 '$ ctrl.flag'にはbooleanが含まれていますか?次に条件を' $ ctrl.flag === true'に変更します –

+0

あなたのコメントごとに@Simonこれも試しましたが、GUIには何の影響もありません –

0

あなたはこのスニペットを試すことができます。

Jsfiddle link

スニペット:

var app = angular.module('myApp', []); 
 

 
app.controller('ctrl', function($scope) { 
 
    $scope.flag = true; 
 
    $scope.toggleClass = function() { 
 
    $scope.flag = !$scope.flag; 
 
    }; 
 
});
.missing {border: solid 1px red;}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app='myApp'> 
 
    <div ng-controller='ctrl'> 
 
    {{flag}} 
 
    <input type='text' class='form-control' ng-model='test' ng-class="{'missing': flag}" /> 
 
    <button ng-click='toggleClass()'> 
 
     Change 
 
    </button> 
 
    </div> 
 
</div>

これは

+0

ありがとうJayantが必要ですが、フラグは明示的なボタンのクリックではなく、いくつかの処理でコントローラ内で自動的に変更されます。ボタンをクリックすることなくそれを行うことができます –

+0

@VishalArthamwarはい我々はそれを行うことができますhttps://jsfiddle.net/knyojb9e/ 1/ –

+0

これは、@ VishalArthamwar ...あなたの状態のフラグ値の範囲を変更しますが、まだ$ ctrlをexplaとして使用する方法を考え出していますanglejs doumentaionでined – Prabhakaran

0

に動作しますが、私は「行方不明に上書きされる他のいくつかのCSSがある私のコードで問題を見つけました'CSSはオーバーライドされたCSSを変更したときに正常に動作し始めました。

input[type="text"].missing {border: 1px solid #ff0000;} 

以前は、私たちにフィドルやcodepenで作業スニペットを与える

input[type="text"] {border: 1px solid #ddd;} 
関連する問題