我有一个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!
我需要如何修改代码才能使其正常工作?
,我想要一种我习惯的类型脚本解决方案语法! 谢谢
答案 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>