针对阵列滤波器纳克重复JSON结果(Filter ng-repeat json result aga

2019-10-20 17:56发布

目前我有被显示在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中。 这是不是我应该写一个自定义过滤器? 对不起,我是很新的角度。

Answer 1:

您可以创建一个角度滤波器它返回匹配黑名单哪些项目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



Answer 2:

最简单的方法是使用自定义过滤器。 快速过滤器可以这样写:

$scope.filterByStrings = function (item) {
    return ($scope.itemsToFilter.indexOf(item.id) === -1);
};

并呼吁这样的:

<div ng-repeat="item in data | filter:filterByStrings ">
    <p>{{item.id}}</p>
</div>

这里是小提琴。



文章来源: Filter ng-repeat json result against array