2015-10-13 70 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>