我的JSON数据如下所示。请问任何人请帮助我按州/地区属性中的代码/ desc过滤数据。
$scope.agent =
{
"0d297c1711de":
[{
"applicationName": "rewards-accounts", "agentId": "0d297c1711de",
"status": { "agentId": "0d297c1711de", "eventTimestamp": 1510580172247, "state": { "code": 100, "desc": "Running" } }
}],
"16f279d66923":
[{
"applicationName": "rewards-accounts-details", "agentId": "16f279d66923",
"status": { "agentId": "0d297c1711de", "eventTimestamp": 1510580172247, "state": { "code": 201, "desc": "Unexpected Shutdown" } }
}],
"203b353d32ef":
[{
"applicationName": "rewards-accounts-details", "agentId": "203b353d32ef",
"status": { "agentId": "0d297c1711de", "eventTimestamp": 1510580172247, "state": { "code": 200, "desc": "Shutdown" } }
}]
};
我在ng-repeat中使用了这个过滤器。它不起作用。 selectedCode是我要过滤的模型数据。
| filter:{status:{ state: { code: **selectedCode**}}}
答案 0 :(得分:0)
你需要传递参数来过滤,在你的特定情况下看起来像:
ng-repeat="a in agent | filter: {status: {state: {code: filter.key}}}"
感谢@Ray
JSFiddle here以供进一步参考。
希望它有所帮助。
答案 1 :(得分:0)
您可以使用自定义过滤器过滤嵌套数据
在控制器中创建过滤器
$scope.customFilter = function (row) {
var result = false;
if($scope.filter == undefined || $scope.filter == ""){
result = true;
}
else{
angular.forEach(row, function(value, key){
if(value.state != undefined){
if(value.state.code == $scope.filter)
result = true;
}
});
}
return result;
};
并将此过滤器添加到ng-repeat
<div ng-repeat="item in agent">
<div ng-repeat="x in item | filter:customFilter">
{{x}}
</div>
</div>