angularテンプレートの配列に値があるかどうかを確認する方法はありますか?私はこのようなものを探しています:
<div ng-class="{'myClass':1 in [1,2,5]}">Yay</div>
1が配列にある場合、myClassが適用されます。
これは可能ですか?
余談ですが、Angularjsで正確に使用されるテンプレートエンジンは何ですか?ドキュメントはどこにありますか?公式のドキュメントであっても、検索して検索するたびに、ディレクティブまたはデータバインディングに関するドキュメントを表示するだけです。
indexOf()
を使用して、値が配列内にあるかどうかをテストし、次にngClass
内で次のように使用できます(条件付きで「newclass」を追加します)。
<div ng-class="{'newclass':([1,2,5].indexOf(2) > -1)}">Yay</div>
または、スコープの配列に対してテストすることをお勧めします。
<div ng-class="{'newclass':(tarray.indexOf(1) > -1)}">Yay</div>
たとえば、コントローラーでtarray
を宣言したと仮定します。
$scope.tarray=[1,2,5];
テンプレートエンジンに関しては、Angularに組み込まれています。そのため、検索するものは別にありません。しかし、ここに トップレベルテンプレートドキュメント があり、いくつかの優れた ビデオチュートリアル があり、テンプレート(たとえば、最初のものはデータバインディングに関するもの)などをカバーしています。
これを確認するフィルターを作成できます。何かのようなもの:
app.filter('inArray', function() {
return function(array, value) {
return array.indexOf(value) !== -1;
};
});
次に、これをテンプレートで次のように使用できます。
<div ng-class="{'newclass': tarray | inArray : 1}">Yay</div>
これの利点は、テンプレートを読みやすくすることです。
これを試して:
ng-class="{'myClass': !!~[1,2,5].indexOf(1)}"
値が配列内にない場合は0が返されるため、!!あなたは偽る