我无法使用ng-repeat迭代密钥和数据 我在这里有一个小提琴https://jsfiddle.net/prantikv/ddLpfmvh/2/
我有像这样的json数据:
{
"container1": {
"value1": "data1",
"value2": "data2",
"value3": "data3",
"value4": "data4",
"value5":{
"innerArray":
[{"innerValue1":"innerData1"},
{"innerValue1":"innerData2"}
]
}
},
"container2": {
"value1": "data1",
"value2": "data2",
"value3": "data3",
"value4": "data4",
"value5":{
"innerArray":
[{"innerValue1":"innerData1"},
{"innerValue1":"innerData2"}
]
}
}
}
我的观点是这个
<input type="text" ng-model="searchInput" />
<ul>
<li data-ng-repeat="(key,value) in reports | filter:searchInput">
{{ key }}</li>
</ul>
我想要实现的是我想要过滤键(container1,container2等)以及值(value1,value2等)
如何实现这一目标? 如果是这样我应该改变我的JSON,请告诉你。
答案 0 :(得分:1)
使用非最佳的对象结构,可以使用ng-if
并在控制器中创建一个函数来检查值
<li data-ng-repeat="(key,value) in reports " ng-if="hasSearch(value)" >
我并不是100%清楚你想要做什么,而且你的数据样本几乎是重复的,但看看如下:
$scope.hasSearch = function(obj){
if(!$scope.searchInput){
return true;
}else{
for (key in obj){
if(typeof obj[key] == 'string' && obj[key].indexOf( $scope.searchInput) >-1){
return true
}
}
return false;
}
}
更好地利用角度我会将您的结构转换为可以排序和过滤的数组,而对象不能
的 DEMO 强>