2015-10-13 69 views
0

我的选择框是NG重复作为过滤,Angularjs“在”以ng选项

<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> 

我的角色ID选择多,所以我想过滤的角色选择公司列表下拉。所以如果我选择两个角色,那么在下拉菜单中有任何角色的公司都会在那里。 现在,如果我只选择一个角色,那么它会被它过滤,但不适用于多个角色。我可以通过角度过滤器在ng选项中做这样的事情吗?自定义过滤器将工作?

$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 
}, 
.... 
]; 
+0

可以显示的RoleList阵列?或者你可以创建相同的plunker –

+0

我已经添加了roleList和projects数组 – Hmahwish

回答

0

检查在这里你可以如何使用过滤器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' 

缺点确定你的项目数组在那里。

0

使用comparator

$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>