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