AngularJS - ng-if 如果数组中有特定值
AngularJS - ng-if if there is a specific value in array
我想在范围内的数组中有特定值时触发 ngIf
。
所以我的瞄准镜上有这个:
var orders = [{
"order_no": 1,
"color": ["blue", "pink", "red"]
}, {
"order_no": 2,
"color": ["yellow", "blue", "white"]
}];
我想要一个 ngIf
来显示一个元素,例如,如果其中一个颜色数组中存在黄色(假设我事先不知道数据范围,但知道提前结构)。
我发现这样做的唯一方法是事先了解作用域的结构,所以 fx ng-if="orders[1].color[0] === 'yellow'"
谢谢!
您可以将其作为函数表达式来执行
ng-if="hasYellow()"
$scope.hasYellow = () => $scope.orders.some(
order => order.color.indexOf("yellow") > -1
);
根据 orders
的大小及其变化的频率,只有一个 hasYellow
属性 并在 orders
时更新它可能更有效改变了。
您可以在 HTML 模板中调用 color
数组的 indexOf 方法。这样,您就不需要使用其他方法污染 $scope
。
方法如下:ng-if="order.color.indexOf('pink') !== -1"
注:不要忘记expressions in AngularJS are different。要记住的一个关键因素是他们很宽容。
Forgiving: In JavaScript, trying to evaluate undefined properties generates ReferenceError or TypeError. In Angular, expression evaluation is forgiving to undefined and null.
这意味着像 myCtrl.foo.bar.wa.la
这样的东西将评估为 undefined
而不会触发 ngIf
。您可以阅读更多相关信息 here.
我想在范围内的数组中有特定值时触发 ngIf
。
所以我的瞄准镜上有这个:
var orders = [{
"order_no": 1,
"color": ["blue", "pink", "red"]
}, {
"order_no": 2,
"color": ["yellow", "blue", "white"]
}];
我想要一个 ngIf
来显示一个元素,例如,如果其中一个颜色数组中存在黄色(假设我事先不知道数据范围,但知道提前结构)。
我发现这样做的唯一方法是事先了解作用域的结构,所以 fx ng-if="orders[1].color[0] === 'yellow'"
谢谢!
您可以将其作为函数表达式来执行
ng-if="hasYellow()"
$scope.hasYellow = () => $scope.orders.some(
order => order.color.indexOf("yellow") > -1
);
根据 orders
的大小及其变化的频率,只有一个 hasYellow
属性 并在 orders
时更新它可能更有效改变了。
您可以在 HTML 模板中调用 color
数组的 indexOf 方法。这样,您就不需要使用其他方法污染 $scope
。
方法如下:ng-if="order.color.indexOf('pink') !== -1"
注:不要忘记expressions in AngularJS are different。要记住的一个关键因素是他们很宽容。
Forgiving: In JavaScript, trying to evaluate undefined properties generates ReferenceError or TypeError. In Angular, expression evaluation is forgiving to undefined and null.
这意味着像 myCtrl.foo.bar.wa.la
这样的东西将评估为 undefined
而不会触发 ngIf
。您可以阅读更多相关信息 here.