[英]AngularJS How i can filter nested object
如何在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;
}
}
为了过滤数据,您有两种不同的方法:
{{ 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
过滤列表内部添加。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.