禁用使用Angularjs的其他多选选项字段中的选定选项

时间:2017-10-13 09:04:04

标签: javascript angularjs

我是Angularjs的新手。我附加动态多选框,我的问题是,我想禁用其他多选框中的所有选定选项。我已尝试Disabled selected item in Angular for other Select Option Fields of the same Items来自上述链接的答案,但它适用于选择框而非多选。我已经尝试了多选的答案,但有一些复杂性。

以上链接适用于动态选择框。我想在多选中做同样的事情。

1 个答案:

答案 0 :(得分:1)

您可以使用disable when中的ngOptions停用,filter删除项目:

angular.module("app", []).controller('MainController', MainController);

function MainController($scope) {
  vm = this;
  
  vm.optionsA = [1, 2, 3, 4];
  vm.optionsB = [1, 2, 3, 4];
  vm.optionsC = [1, 2, 3, 4];
  vm.selectA = [];
  vm.selectB = [];
  vm.selectC = [];
  
  vm.disable = function(i) {
  	return vm.selectA.indexOf(i) >= 0;
  }
  
  vm.filter = function(i) {
  	return vm.selectA.indexOf(i) < 0;
  }
  
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>

<div ng-app="app" ng-controller="MainController as ctrl">
  <select multiple ng-model="ctrl.selectA" ng-options="t for t in ctrl.optionsA">
  </select>
  {{ctrl.selectA}}
  <select multiple ng-model="ctrl.selectB" ng-options="t disable when ctrl.disable(t) for t in ctrl.optionsB">
  </select>
  {{ctrl.selectB}}
  
    <select multiple ng-model="ctrl.selectC" ng-options="t for t in ctrl.optionsC | filter:ctrl.filter">
  </select>
</div>