gpt4 book ai didi

javascript - ng-repeat 过滤键和数据

转载 作者:行者123 更新时间:2023-11-28 00:21:05 25 4
gpt4 key购买 nike

我在使用 ng-repeat 迭代键和数据时遇到问题我这里有一个 fiddle 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,请告诉我。

最佳答案

使用并非最佳的对象结构,您可以使用 ng-if 并在 Controller 中创建一个函数来检查值

<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;
}
}

为了更好地利用 Angular ,我会将您的结构转换为可以排序和过滤的数组,而对象则不能

DEMO

关于javascript - ng-repeat 过滤键和数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30016766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com