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>
您需要创建一个接受数组的过滤器。它会根据提供的值给你输出。
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)
希望对您有所帮助。
我有这样的字典:
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>
您需要创建一个接受数组的过滤器。它会根据提供的值给你输出。
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)
希望对您有所帮助。