如果已经回答这个问题,我很抱歉,但我是Angular的新手,所以可能会错过它。
我需要提供多组复选框列表,需要将它们组合起来创建AND查询。
它位于Plunker http://plnkr.co/OGmGkz22n4J4T8p74yto,但如下所示。目前我可以选择底行,并从storeArray中显示正确的名称,但我无法弄清楚如何将Format数组添加到过滤器中。
我试过了:
<div ng-repeat="store in storeArray | filter:(formatFilter && tillFilter)">
和
<div ng-repeat="store in storeArray | filter:formatFilter:tillFilter">
但是他们没有工作。
有什么建议吗?
var myApp = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.formatFilter = function(a) {
for (var fmt in $scope.formatsArray) {
var f = $scope.formatsArray[fmt];
if (f.on && a.format.indexOf(f.name) > -1) {
return true;
}
}
};
$scope.tillFilter = function(a) {
for (var till in $scope.tillsArray) {
var t = $scope.tillsArray[till];
if (t.on && a.tills.indexOf(t.name) > -1) {
return true;
}
}
};
$scope.formatsArray = [{
name: "Super",
on: false
}, {
name: "Express",
on: false
}, {
name: "Other",
on: false
}];
$scope.tillsArray = [{
name: "Main",
on: false
}, {
name: "Service",
on: false
}, {
name: "Petrol",
on: false
}];
$scope.storeArray = [{
"id": "1",
"name": "101",
"format": "Super",
"tills": ["Main", "Service", "Petrol"]
}, {
"id": "2",
"name": "102",
"format": "Express",
"tills": ["Main", "Service"]
}, {
"id": "3",
"name": "103",
"format": "Other",
"tills": ["Main", "Petrol"]
}, {
"id": "4",
"name": "104",
"format": "Super",
"tills": ["Service", "Petrol"]
}];
}
答案 0 :(得分:1)
虽然您可以像这样链接过滤器:
<div ng-repeat="store in storeArray | filter:formatFilter | filter:tillFilter)">
这不会解决您的问题,因为第一个过滤器会完成它的工作,并过滤掉您可能希望包含在第二个过滤器中的项目。我不知道有什么方法可以做&#34;或&#34;过滤。你有什么理由可以做一个包含两者的自定义过滤器吗?我用自定义过滤器修改了你的plunker:
http://plnkr.co/edit/han1LFl7toTsSX27b9Q0?p=preview
代码不是非常干净......它完成了这项工作。 :)你可能想稍微改善一下。