angularjs通过已选择的选项过滤ng-options

时间:2018-07-31 14:35:11

标签: angularjs

因此,我有一个基于接收到的JSON的md-select。这些选项具有“类型”属性,可以如下所示进行过滤:

$scope.data = [
    {name:"1-1",Id:1,type:1},
    {name:"2-2",Id:2,type:2}, 
    {name:"3-2",Id:3,type:2},
    {name:"4-2",Id:4,type:2},
    {name:"5-3",Id:5,type:3},
    {name:"6-3",Id:6,type:3}
];
<md-select multiple class="form-control" ng-model="selectedIds"> 
    <md-option ng-value="item.Id" ng-repeat=""item as (item.Name) for item in data">
        {{item.Name}}">
    </md-option>
</select>

但是我需要的是使用同一下拉列表中已经选择的选项来过滤选择中显示的选项。因此,如果我选择选项“ 3-2”,则下拉列表将仅显示“ 2-2、3-2和4-2”。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

可以使用this other question找到解决方案: 更改时,我使用所选ID的过滤器来获取所选类型,然后将该类型用作选项的过滤器。另外,如果未选择任何选项,则应该将“ selectedType”设置为空,否则将按第一个选项的类型进行过滤。

<md-select multiple class="form-control" ng-model="selectedIds"
ng-change="selectedType=(selectedIds.length=0)?'':(data|filter:{Id:selectedIds})[0].type"> 
    <md-option ng-value="item.Id" ng-repeat="item in data | filter : selectedType">
        {{item.Name}}">
    </md-option>
</select>