内置的Angular"过滤器"支持过滤数组,意思是"过滤数组包含"
如下:
$scope.currentFilter = "Allentown";
$scope.users = [{
name: "user1",
locations: [
{ name: "New York", ... },
{ name: "Allentown", ... },
{ name: "Anderson", ... },
]
}, ... ];
<div ng-repeat="user in users | filter : { locations: { name: currentFilter } }"></div>
换句话说,我希望仅过滤到具有&#34;位置的用户&#34;包含按名称匹配字符串的位置的数组。
如果没有,我如何使用自定义过滤器完成此操作?
答案 0 :(得分:1)
您的代码段自Angular 1.2.13以来一直有效。如果您使用的是旧版本(在1.0.1上测试过)并且不需要跨控制器重复使用过滤例程(在这种情况下您应该声明一个正确的过滤器),您可以传递内置的{{3一个谓词函数:
<div ng-repeat="user in users | filter : hasLocation">{{user.name}}</div>
写下这样的话:
$scope.currentFilter = "Allentown";
$scope.hasLocation = function(value, index, array) {
return value.locations.some(function(location) {
return location.name == $scope.currentFilter;
});
}
小提琴filter。