【发布时间】:2017-01-29 19:33:13
【问题描述】:
我有一个优先级 (1, 2, 3) 的数组,用作多个选择框中的选项。我希望每个优先级只能选择一次。因此,如果在一个选择框中选择了“2”,则应在其他选择框中将其删除或禁用。 我找到了一个过滤器here,但它没有让它在我的代码中工作。
HTML:
<div ng-repeat="object in objects">
<md-select ng-model="selectedPriority[$index].priority" ng-change="selectedPriority[$index].objectId = object.id" >
<md-option ng-value="priority" ng-repeat="priority in priorities | arrayDiff:priorities:selectedPriority[$index].priority">{{ priority }}</md-option>
</md-select>
</div>
JS:
.controller('Ctrl', function ($scope, $filter) {
$scope.selectedPriority = [ ];
$scope.data = [];
$scope.priorities = ['1', '2', '3'];
$scope.objects = [{"date": "2017-01-08", "duration": 120}, {"date": "2017-01-07", "duration": 120}]
})
.filter('arrayDiff', function() {
return function(array, diff) {
var i, item,
newArray = [],
exception = Array.prototype.slice.call(arguments, 2);
for(i = 0; i < array.length; i++) {
item = array[i];
if(diff.indexOf(item) < 0 || exception.indexOf(item) >= 0) {
newArray.push(item);
}
}
return newArray;
};
});
这是我的代码的 plunker: http://plnkr.co/edit/ZXp5kKJaFZcKdur2xueS?p=preview
【问题讨论】:
-
如果您可以提供代码的 plunker/jsfiddle 会更好。
-
我用我的代码添加了一个 plunker:plnkr.co/edit/ZXp5kKJaFZcKdur2xueS?p=preview
标签: javascript angularjs