0

我有一本这样的字典:

var data = {
  a: [1, 2, 3, 4, 5],
  b: [
    [1, 2],
    [3, 4],
    [5, 6]
  ]
};

现在我需要用来ng-hide隐藏一个元素(如果2存在于data->a. 可以像这样轻松完成:

<i ng-hide="(data.a | filter:2).length">2 not found</i>

现在我该怎么做呢data->b2如果在任何data->b项目中找到该消息,我需要隐藏该消息。

我发现如果嵌套的 ng-repeat 不为空,我如何只显示一个元素?. 但我只需要显示一次消息。

4

2 回答 2

1

您需要创建一个接受数组的过滤器。它会根据提供的价值为您提供输出。

HTML

<div ng-hide="(data.b | filteronsubarray:2)">2 not found</div>

过滤器代码

app.filter('filteronsubarray', function() {
  return function(arr, toFind) {
    var isFound = false;
    angular.forEach(arr, function(val, index) {
      angular.forEach(val, function(v, i) {
        if(v == toFind){
          isFound = true;
        }
      });
    });
    return isFound;
  }
});

这是小提琴链接(http://plnkr.co/edit/gApW4sAYMOBLPh8gJyE3?p=preview

希望这对你有帮助。

于 2015-01-16T09:52:04.837 回答
0

如果您只需要为 做任何事情data.a,除了 的每个元素data.b,那么您只需要迭代data.b并应用相同的逻辑:

<i ng-repeat="b in data.b"
   ng-hide="(b | filter:2).length">2 not found</i>

普朗克

于 2015-01-16T04:26:37.130 回答