複数の選択ボックスのオプションとして優先度(1,2,3)の配列があります。優先度のそれぞれを選択できるのは1回だけです。したがって、1つの選択ボックス '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
が良いかもしれません。 –
私のコードでプランナーを追加しました:http://plnkr.co/edit/ZXp5kKJaFZcKdur2xueS?p=preview – maidi