haben, was es tun solltePrevent mehrere wählen den gleichen Wert
ich den Benutzer verhindern möchten, dass zweimal die gleiche Option auswählen können, in mehreren <select>
die gleichen Möglichkeiten haben.
Was ist tun
Wenn ein Wert auf dem ersten Drop-Down-Auswahl, wird der zweite hat die Möglichkeit, nicht sichtbar (gut). Wenn Sie jedoch einen Wert für das zweite Dropdown-Menü auswählen (und das erste bereits vorhanden ist), werden alle ausgewählten Elemente gelöscht. Ich lande mit einer Auswahl [null, null]
.
Fehle ich etwas?
var app = angular.module('App', []);
app.controller('AppController', function($scope) {
$scope.selected = [];
$scope.array = [{
id: 0,
title: 'Option0'
}, {
id: 1,
title: 'Option1'
}, {
id: 2,
title: 'Option2'
}, {
id: 3,
title: 'Option3'
}];
});
app.filter('arrayFilter', function() {
return (arr, remove, keep) => {
return arr.filter((item) => {
for (var i in remove) {
if (remove[i] == item.id) {
// If checking current selected, return true
if (i == keep) {
return true;
}
// Otherwise, current item is selected, return false
return false;
}
}
return true;
});
};
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.10/angular.min.js"></script>
<div ng-app="App" ng-controller="AppController">
<select ng-model="selected[0]" ng-options="option.id as option.title for option in array | arrayFilter:selected:0 track by option.id"></select>
<select ng-model="selected[1]" ng-options="option.id as option.title for option in array | arrayFilter:selected:1 track by option.id"></select>
{{ selected }}
</div>
Weitere Fragen
Für diese Art von Verhalten sollte ich ng-repeat
mit ng-hide
statt ng-options
mit einem filter
verwenden?
Was ist die beste Praxis in diesem Fall?