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.