У меня есть динамический блок html, для которого пользователь может добавить несколько списков выбора. Я хочу отключить выбор, который пользователь сделал в предыдущих списках, проверив использование настраиваемого фильтра. Часть, в которой я пытаюсь передать динамическую модель в фильтр, и проверить, что это значение не существует в уже сгенерированных списках выбора.Списки выбора углового фильтра, исключая выбранное значение
Я создал plunker. Я ценю помощь.
<body ng-app="app" ng-init="things=[{id:0,name:'thing1'},{id:1,name:'thing2'},{id:2,name:'thing3'},{id:3,name:'thing4'}]">
<select ng-model="fields.option1" ng-options="thing.name for thing in things | excludeFrom:fields.option2"></select>
<select ng-model="fields.option2" ng-options="thing.name for thing in things | excludeFrom:fields.option1"></select>
<select ng-model="fields.option2" ng-options="thing.name for thing in things | excludeFrom:fields.option1,fields.option2"></select>
angular.module('app',[])
.filter('excludeFrom', [function() {
return function (things, selectedValue) {
if (!angular.isUndefined(things) && !angular.isUndefined(selectedValue)) { //&& selectedValue.length > 0) {
var tempThings = [];
angular.forEach(selectedValue, function (name) {
angular.forEach(things, function (things) {
if (angular.equals(things, selectedValue.name)) {
tempThings.push(things);
}
});
});
return tempThings;
} else {
return things;
}
};
}]);
Привет @Bricktop, я пытался динамически передавать модель. Разве это невозможно? – Jimi
Привет @Jimi, я не уверен, что вы имеете в виду с динамической моделью; Я предполагаю, что модель имеет динамическую длину? Это должно быть возможно, но, вероятно, сложнее достичь. Я попытаюсь найти решение, но это может занять некоторое время. – Bricktop
Если я передам значение из ng-model = "select1" в фильтр, он явно работает. Если я попытаюсь передать всю модель, с несколькими значениями в я получаю ошибки синтаксического анализа. Несомненно, это может быть передано как объект? – Jimi