AngularJS ng-隐藏在嵌套字典中

AngularJS ng-hide in nested dictionary

我有这样的字典:

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->b 来实现?如果在任何 data->b 项中发现 2,我需要隐藏消息。

我找到了 How do I only show an element if nested ng-repeat is not empty?。但是我只需要显示一次消息。

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

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

Plunker

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

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;
  }
});

这里是Fiddlelink(http://plnkr.co/edit/gApW4sAYMOBLPh8gJyE3?p=preview)

希望对您有所帮助。