目前我有被显示在NG-重复,我想基于一个单独的对象或数据的阵列上已过滤的一个JSON结果:
Controller.js
$scope.jsonResult = [
{
"id": "a123"
},
{
"id": "b456"
}
]
HTML
<span ng-repeat="r in jsonResult">{{r.id}}</span>
我所试图实现是创建信息的一个单独的数组,然后使用这些数据来过滤ng-repeat
的结果,在我的HTML显示。
$scope.itemsToFilter = ["b456","foo"]
因为我内的项目itemsToFilter
阵列我内的对象匹配jsonResult
范围,我想这不是我的内显示ng-repeat
HTML中。 这是不是我应该写一个自定义过滤器? 对不起,我是很新的角度。
您可以创建一个角度滤波器它返回匹配黑名单哪些项目IDS过滤数组:
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-重复:
<span ng-repeat="r in jsonResult | filterArrayByBlacklist">{{r.id}}</span>
见演示此plnkr: http://plnkr.co/edit/VK3jiVBpL0e1G06WmPZq
最简单的方法是使用自定义过滤器。 快速过滤器可以这样写:
$scope.filterByStrings = function (item) {
return ($scope.itemsToFilter.indexOf(item.id) === -1);
};
并呼吁这样的:
<div ng-repeat="item in data | filter:filterByStrings ">
<p>{{item.id}}</p>
</div>
这里是小提琴。