Angularjs ng-repeat удалить выбранный параметр из нескольких полей выбора

Использование ng-repeat am загружает несколько элементов раскрывающегося списка выбора, и в каждом раскрывающемся списке загружается один и тот же набор значений. Как только пользователь выбирает параметр в поле выбора; Выбранный параметр не должен отображаться в других полях выбора (параметрах).

Пример: если пользователь выбирает вариант A из select: 1; затем в select: 2 или любом другом select: N вариант A не должен отображаться и наоборот.

Плункер: https://plnkr.co/edit/yCFIanCXPece49dk?open=lib%2Fscript.js&deferRun=1&preview

Код:

 <option ng-repeat = "option in data.availableOptions | filter:arrayFilter(select.selectedOption,$index)" value = "{{option.id}}">

   $scope.arrayFilter = function(selectionArray, position) {
    return function(item, index) {
      return selectionArray.indexOf(item.id) == -1 || item.id == selectionArray[position];
    }
  }
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
640
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете получить параметры вложенного ng-repeat с помощью функции, а затем отфильтровать параметры, которые не являются текущими и выбраны:

HTML:

<select name = "repeatSelect{{$index}}" id = "repeatSelect{{$index}}" ng-model = "select.selectedOption">
  <option
    ng-repeat = "option in getAvailableOptions(select.selectedOption)"
    value = "{{option.id}}"
  >
    {{option.name}}
  </option>
</select>

контроллер:

$scope.getAvailableOptions = function(current) {
  return this.data.availableOptions.filter((o) => o.id === current || !this.data.availableSelect.some(s => s.selectedOption === o.id));
};

а вот и раздвоенный плункер

Разветвил плункер, чтобы включить пустой выбор; Если пользователь хочет повторно использовать/сбросить значение параметра. plnkr.co/edit/…

John Smith 26.12.2020 20:36

Другие вопросы по теме