目前我有一个 json 结果显示在一个 ng-repeat 中,我想根据单独的对象或数据数组进行过滤:
Controller.js
$scope.jsonResult = [
{
"id": "a123"
},
{
"id": "b456"
}
]
HTML
<span ng-repeat="r in jsonResult">{{r.id}}</span>
我试图实现的是创建一个单独的信息数组,然后使用此数据过滤显示在我的 HTML 中的 ng-repeat
结果。
$scope.itemsToFilter = ["b456","foo"]
由于我的 itemsToFilter
数组中的一个项目与我的 jsonResult
范围内的一个对象匹配,我不希望它显示在我的 ng-repeat
在 HTML 中。这是我应该为其编写自定义过滤器的东西吗?抱歉,我是 Angular 的新手。
最佳答案
您可以创建一个 Angular 过滤器,它返回由与您的黑名单匹配的项目 ID 过滤的数组:
angular.module("yourAppName")
.filter("filterArrayByBlacklist", function() {
blackList = ["b456","foo"];
return function(array) {
return array.filter(function(item) {
return blackList.indexOf(item.id) === -1; // item id not found in blacklist
});
};
});
然后您可以通过过滤函数过滤 ng-repeat:
<span ng-repeat="r in jsonResult | filterArrayByBlacklist">{{r.id}}</span>
查看此 plnkr 以获得演示:http://plnkr.co/edit/VK3jiVBpL0e1G06WmPZq
关于javascript - 根据数组过滤 ng-repeat json 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25392766/