我想通过ID,评级和其他各种密钥过滤结果,我正在使用这种数据结构:
[
{
"id": "1"
"Description": "desc 1",
"Rating": "rating 1",
"MainImage": "image.jpg"
},
{
"id":"1"
"Description": "desc 2",
"Rating": "rating 2",
"MainImage": "image.jpg"
},
{
"id": "2"
"Description": "desc 3",
"Rating": "rating 3",
"MainImage": "image.jpg"
}
]
此数据从承诺返回,并分配给$scope.results
。在模板中有一个ng-repeat
来迭代结果。这工作正常,我的问题是:
如何按id
过滤结果,例如,仅显示id
为1的结果?我有这个工作,但它不是最有效的。我将过滤后的结果重新分配回$scope.results
,但确实有效,但整个数据结构已被包含过滤结果的数据结构所取代。这显然不起作用,我做了一个工作,但我知道这不是最好的方法。
我需要一个自定义过滤器,它可以使用3个不同的选择列表来处理过滤,例如rating
选择列表,productId
和productName
。
我究竟该怎么写这个函数?
<div class="product" data-ng-repeat="product in products | filter:searchFilter"></div>
答案 0 :(得分:0)
我最终做了一些我发现here并在后端创建了一个函数的东西。类似的东西:
$scope.searchFilter = function (item) {
return (item.id === $scope.results.id)
}
这段代码并不完全是我所使用的,但这是一般的想法。似乎工作:))
答案 1 :(得分:0)
id
答案 2 :(得分:-1)
我就是这样做的。
<input type="number" ng-modal="idFilter:selectedID">
<div ng-repeat="result in results | idFilter:selectedID | track by $index">
<something-repeated>
</div>
<script>
angular.module('whatever').filter('idFilter', function(){
return function(results, selectedID){
return results.filter(function(result){
return result.id == selectedID;
});
}
});
</script>