AngularJS-如何在ng-repeat中按整数数组过滤?

时间:2019-05-21 10:02:13

标签: angularjs filter angularjs-ng-repeat

我有一个ng-repeat,并且以这种方式用一个简单的整数对其进行过滤:

视图:

ng-repeat="t in vm.presencesByPerson | filter: vm.customfilter">

控制器:

在这里,我在一个下拉列表上有一个观察者,并根据下拉列表的选择,将选择的值传递为过滤器:

this.customfilter = { person: { id: parseInt(filters[0])}};

之所以这样,是因为presencesByPerson对象的结构是[{person: {id, name, etc..}]

这正常工作,并且my ng-repeat已被过滤。

现在,我不想传递单个id,而是传递id的数组,如下所示:

arrayID = [x, y, z]

以便它按数组的每个值过滤我的ng-repeat!

我需要如何修改代码才能使其正常工作?

,我想要一种我习惯的类型脚本解决方案语法! 谢谢

1 个答案:

答案 0 :(得分:0)

将您的customFilter对象更改为功能并使用arrayID[]

进行过滤
    this.customfilter = function(person) {
        if (arrayID.indexOf(person.id) != -1)
            return true;
    }; 

希望有帮助!

var app = angular.module("myShoppingList", []);
app.controller("myCtrl", function($scope) {

    $scope.customfilter = function(person) {
        if (arrayID.indexOf(person.id) != -1)
            return true;
    };

    $scope.friends = [{ name: 'John', phone: '555-1276', id: 1 },
        { name: 'Mary', phone: '800-BIG-MARY', id: 2 },
        { name: 'Mike', phone: '555-4321', id: 3 },
        { name: 'Adam', phone: '555-5678', id: 4 },
        { name: 'Julie', phone: '555-8765', id: 5 },
        { name: 'Juliette', phone: '555-5678', id: 6 }
    ]

    arrayID = [1, 3, 6];    
});
<script src="//unpkg.com/angular/angular.js"></script>
<body ng-app="myShoppingList" ng-controller="myCtrl">
    <label>Search: <input ng-model="searchText"></label>
    <table id="searchTextResults">
        <tr>
            <th>Name</th>
            <th>Phone</th>
        </tr>
        <tr ng-repeat="friend in friends | filter:customfilter">
            <td>{{friend.name}}</td>
            <td>{{friend.phone}}</td>
        </tr>
    </table>
</body>