javascript - 根据数组过滤 ng-repeat json 结果

标签 javascript json angularjs angular-filters

目前我有一个 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/

相关文章:

javascript - 有必要手动删除事件处理程序吗?

javascript - 如何使用单选按钮连接数组元素

asp.net - 我的 JSON 数组会是什么样子?

javascript - 在 Angular 2/TypeScript 中上下遍历多维数组

javascript - 在 php 中使用不同的 mysql 在循环中循环

javascript - 在路由中使用 socket.io

javascript - 通过Ajax加载Div时,有时点击不起作用

javascript - 检测链接并在 native react 中返回另一个 View

javascript - 获取触发 ng-click 的元素

javascript - 初级数组问题 - Javascript