我有一个项目列表,我需要3个过滤器。 1个过滤器是一个简单的名称搜索。 其中2个过滤器是用户可以切换以调整其数据的复选框。
以前,当我没有使用复选框(并且只允许每个过滤器使用一个值)时,下面的行允许使用所有过滤器:
'<tr ng-repeat="item in data.itemList | orderBy: orderField | filter: {attr1 : a1Value} | filter: {attr2: a2Value} | filter: {attr3 : a3Value}">'
但是现在我正在使用复选框,这不再适用。 这是我到目前为止所尝试的。 HTML:
'<!--list of checkboxes-->
<dl>
<dt ng-repeat="type in data.att1List">
<input type="checkbox" ng-model="a1Obj[type]">{{att1}}
</dt>
</dl>
<!--...-->
<!-- list of data items -->
<tr ng-repeat="item in data.itemList | orderBy: orderField | filter: {attr1 : a1Filter} | filter: {attr2: a2Obj} | filter: {name : nameValue}">
<!--...-->'
在控制器中我有:
'$scope.data.att1List = ['Group','Corp','HR'];
$scope.data.itemList = [
{name:'Zeus', attr1:'Corp', attr2:'green' },
{name:'Athena', attr1:'HR', attr2:'blue' },
{name:'Apollo', attr1:'Corp', attr2:'red' },
{name:'Thor', attr1:'Group', attr2:'green' }
];
$scope.a1Obj= {
'Group' : false,
'HR' : false,
'Corp' : false
};`
$scope.a1Filter = function (itm) {
return $scope.a1Obj[itm.attr1];
};'
我错过了什么?有没有人对链接多个过滤器有任何见解,其中一个或多个是复选框?