2016-08-21 7 views
2

ngIfは、範囲内の配列に特定の値がある場合にトリガーしたいと思います。AngularJS - ng - 配列に特定の値がある場合if

だから、私は私の範囲でこれを持っている:

var orders = [{ 
    "order_no": 1, 
    "color": ["blue", "pink", "red"] 
}, { 
    "order_no": 2, 
    "color": ["yellow", "blue", "white"] 
}]; 

Iは、例えば、イエロー、私はないこと与えられ(色配列のいずれかに存在する場合は、1つの要素を示すngIfしたいと思いますデータスコープを事前に知っているが、事前に構造を知っている)。

私はそれを行うに発見した唯一の方法は、事前にスコープの構造を知ったときも、そうng-if="orders[1].color[0] === 'yellow'"

感謝をFXう!

答えて

7

color配列のindexOfメソッドをHTMLテンプレート内で呼び出すことができます。この方法では、$scopeを別の方法で汚染する必要はありません。がexpressions in AngularJS are differentことを忘れないでください:ng-if="order.color.indexOf('pink') !== -1"

注:

はここに方法です。覚えておくべき重要な要素は、彼らが寛容であることです。

を寛容:JavaScriptでは、未定義の特性を評価しようとするにReferenceErrorまたはTypeError例外を生成します。 Angularでは、式の評価は未定義とnullを許しています。

これはmyCtrl.foo.bar.wa.laのようなものがngIfをトリガしませんundefinedに評価されることを意味します。あなたはそれについての詳細を読むことができますhere

+0

答えはより詳細なので、これを正しいとマークし、htmlでそれをもっとわかりやすいようにします。ありがとう! – Joe82

1

あなたはordersの大きさと頻度、それは、それだけでordersが変更されていることをhasYellowプロパティとアップデートを持っている方が効率的かもしれ変更に応じて、関数式

ng-if="hasYellow()" 

$scope.hasYellow =() => $scope.orders.some(
    order => order.color.indexOf("yellow") > -1 
); 

としてこれを行うことができます。

関連する問題