2017-10-02 11 views
1

ng-classでクラスを設定するためにチェックしようとしている2つのパラメータがありますが、何らかの理由で1つでは動作しません。ここでng-classの複数の引数が機能しない

は私のコードです:

ng-class="{'alert-viewed':item.viewed && item.status <= 0} 

ちょうど私達 'アラート表示' の場合:それが動作item.viewed。しかし、item.statusチェックを追加すると、それが中断されます。

誰かが見逃していることを見てください。

+0

「item.status」の典型的な値は何ですか? '-1'は共通の値ですか?とにかくステータスを表現するために数字を使用するのはなぜですか?これをさらに詳しく見ると、おそらく 'item.viewed &&(item.status <= 0)' – Claies

+0

APIのデフォルト値0が設定されています。この値はintです。ステータスには最大4つの状態があります。さて、元の質問に...どんな洞察?私は、クラスを設定するために複数の引数を持つ式を持つ他のシナリオを想像することができます。 – cnak2

+0

括弧は助けになりませんでしたか?今すぐ '&&'が評価されているので、 'item.viewed && item.status'が評価され、' <= 0'と比較されます。あなたが望むのは 'item.viewed'が'(item.status <= 0) 'とは別に評価されていると思います。 – Claies

答えて

1

式の演算の順序が間違っています。 &&<=より高い優先度を持つため、フラグは最初に評価されてから<=0と比較されます。代わりに、式の後半部分が最初に評価されるようにしたい場合は、、次にが前半と比較されます。これは、文の後半部分に括弧が必要であることを意味します。

ng-class="{'alert-viewed':item.viewed && (item.status <= 0)} 
関連する問題