web-dev-qa-db-ja.com

angular template?

angularテンプレートの配列に値があるかどうかを確認する方法はありますか?私はこのようなものを探しています:

<div ng-class="{'myClass':1 in [1,2,5]}">Yay</div>

1が配列にある場合、myClassが適用されます。

これは可能ですか?

余談ですが、Angularjsで正確に使用されるテンプレートエンジンは何ですか?ドキュメントはどこにありますか?公式のドキュメントであっても、検索して検索するたびに、ディレクティブまたはデータバインディングに関するドキュメントを表示するだけです。

36
Anonymous

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に組み込まれています。そのため、検索するものは別にありません。しかし、ここに トップレベルテンプレートドキュメント があり、いくつかの優れた ビデオチュートリアル があり、テンプレート(たとえば、最初のものはデータバインディングに関するもの)などをカバーしています。

71
KayakDave

これを確認するフィルターを作成できます。何かのようなもの:

app.filter('inArray', function() {
    return function(array, value) {
        return array.indexOf(value) !== -1;
    };
});

次に、これをテンプレートで次のように使用できます。

<div ng-class="{'newclass': tarray | inArray : 1}">Yay</div>

これの利点は、テンプレートを読みやすくすることです。

13
Martin

これを試して:

ng-class="{'myClass':  !!~[1,2,5].indexOf(1)}"

値が配列内にない場合は0が返されるため、!!あなたは偽る

5
Whisher