我的选择框是ng-repeat as,
<tr ng-repeat="project in projects | filter:filter">
<td>
<select class="form-control" ng-model="project.roleIds" ng-options= "role.id as role.name for role in roleList " multiple></select>
</td>
<td>
<select class="form-control" ng-model="project.company" ng-options= "obj.id as obj.name for obj in compnayList | filter:{roleId:project.roleIds}"></select>
</td>
</tr>
我的roleId选择是多个,所以我想在选择角色时过滤公司列表下拉列表。所以如果我选择两个角色,那么有任何角色的公司都会在下拉框中出现。现在,如果我只选择一个角色,那么它会过滤它,但不会过滤多个角色。我能在ng-options中通过角过滤器做到这一点吗?自定义过滤器可以工作吗?
$scope.companyList=[{
id:1,
name:"ABC",
roleId:1
},
{
id:2,
name:"ABCd",
roleId:2
},
{
id:3,
name:"ABCgh",
roleId:1
}];
$scope.roleList=[{
id:1,
name:"Grade A",
},
{
id:2,
name:"Grade B",
},
{
id:3,
name:"Grade C",
}];
项目列表是这样的,
$scope.projects=[{
id:100,
projectName:"Project 1",
roleIds: [1,2],
company:1
},
....
];
查看这里如何使用过滤器http://dojo.telerik.com/EmoQu
<input type='text' ng-model='roleId' placeholder='role id'>
<select class="form-control" ng-model="project.available" ng-options= 'obj.id as obj.name for obj in [{id:1,name:"ABC",roleId:1}, {id:2,name:"ABCd",roleId:2},{id:3,name:"ABCgh",roleId:1}] | filter:roleId'
使用比较器:
$scope.in = function (items, value) {
return items.indexOf(value) !== -1;
};
html: <select class="form-control" ng-model="project.available"
ng-options="obj.id as obj.name for obj in compnayList | filter:{roleId:project.roleIds}:in">
</select>