【发布时间】:2016-09-12 09:56:42
【问题描述】:
我有一组具有用户和兴趣的对象。我想filter 基于兴趣的列表。 An user can have multiple interests and when selected interests check boxes the list should filter out based on those interests.我在 ng-repeat 上使用了基本过滤器,但它不起作用。
如果我选择“体育”,则应该显示“约翰”和“罗莎琳”。 如果我选择“电影”和“阅读”,那么应该显示所有 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);
}
});
});
【问题讨论】:
标签: javascript angularjs filter