如何在AngularJS中过滤嵌套对象?我创建了一个函数来获取proptypes
。我要过滤type1.value = false
。
scope.States = {
"1": {
"Prop": {
"id": 1
},
"PropTypes": {
"Type1": {
"date": "2015-05-30T01:01:04",
"value": false,
"id": 1,
"name": "defautPompier"
},
"Type2": {
"date": "2015-05-30T01:01:04",
"value": true,
"id": 1,
"name": "Delestage"
}
},
"defaultsInstallations": ["defautPompier", "Delestage"]
}
}
$scope.GetDefaultByInstallation = function(title) {
$scope.installationsStates = [];
var res;
$scope.result = [];
Object.keys($scope.States).forEach(function(key) {
var res = false;
angular.forEach($scope.States[key].PropTypes, function(value, cle) {
if ($scope.States[key].PropTypes[cle] == title) {
res = true;
}
}
答案 0 :(得分:0)
要过滤数据,您有两种不同的方法:
{{ expression [| filter_name[:parameter_value] ... ] }}
在这种情况下,由于有了“管道”,您可以在代码中添加一个过滤器。
例如 HTML:
<ul>
<li ng-repeat="friend in person.friends | startsWithA">
{{ friend }}
</li>
</ul>
JS:
app.filter('startsWithA', function () {
return function (items) {
var filtered = [];
for (var i = 0; i < items.length; i++) {
var item = items[i];
// ... your logic for filter items
// E.G.
if (/a/i.test(item.name.substring(0, 1))) {
filtered.push(item);
}
}
return filtered;
};
});
您还可以在控制器上过滤数据(您必须在范围内添加新的过滤列表),然后在ng-repeat
内添加过滤列表。