我有一个与用户和兴趣的对象数组。我想filter
基于兴趣的清单。用户可以有多个兴趣点,当选定兴趣点复选框时,该列表应该根据这些兴趣点过滤出来。我在ng-repeat上使用了一个基本的过滤器,但它不起作用。角度过滤器与数组中的项目列表
如果我选择“体育”,那么应显示“约翰”和“Rosaline”。 如果我选择“电影”和“阅读”,则应显示所有3个用户。 以下是我的代码。
Plunker:https://plnkr.co/edit/A0ojO3MH8rDhFJVXlEAs?p=preview
查看:
<div ng-app="myApp" ng-controller="myController" style="padding:20px">
<input type="checkbox" ng-model="selection.reading" ng-true-value="'reading'" ng-false-value="''">reading
<input type="checkbox" ng-model="selection.sports" ng-true-value="'sports'" ng-false-value="''">sports
<input type="checkbox" ng-model="selection.movies" ng-true-value="'movies'" ng-false-value="''">movies
<br><br>
Selected Values: {{selectedValues}}
<hr>
<div ng-repeat="d in data | filter: selectedValues">
<h4>
Name: {{d.user}}
</h4>
<h4>
Interests: {{d.interests}}
</h4>
<hr>
</div>
控制器:
$scope.selection = {};
$scope.data = [
{
user: "John",
interests: ["reading","sports","movies"]
},
{
user: "David",
interests: ["movies","reading"]
},
{
user: "Rosaline",
interests: ["sports","movies"]
}
];
$scope.$watchCollection('selection', function() {
$scope.selectedValues = [];
angular.forEach($scope.selection, function (value, key) {
if (value) {
$scope.selectedValues.push(value);
}
});
});
看看http://stackoverflow.com/questions/15868248/how-to-filter-multiple-values-or-operation-in-angularjs/21169596#21169596 – Manish