Отключить повторный выбор, когда модель была выбрана в Angularjs-chosen

#javascript #angularjs #jquery-chosen #angular-chosen

#javascript #angularjs #jquery-выбрано #angular-выбрано

Вопрос:

Мне нужна помощь в следующем сценарии:

Я использую выпадающие списки с одним выбором в таблице. Каждая строка имеет свой собственный выпадающий список. Теперь есть 2 варианта изменения выбора:

  1. Нажмите на значок отмены выбора (‘x’) (работает нормально — через ng-change).
  2. Откройте выпадающий список, выберите другое значение из списка. Переопределить предыдущее значение (хотя срабатывает ng-change, я не могу узнать, является ли это новым значением или переопределяющим значением).

Я хочу отключить второе поведение. Можно ли «сообщить» выбранному, что после выбора значения единственный способ повторно выбрать новое значение — нажать на «x»? например: после выбора значения отключите выпадающий список, скройте значок «стрелка», но сохраните «x»отменить выбор значка активным?

 <select chosen
                            allow-single-deselect="true"
                            placeholder-text-single="'Select'
                            ng-model="row.userSelection"
                            ng-options="field as field.name for field in vm.fields">
                        <option value=""></option>
                    </select>
 

Спасибо.

Ответ №1:

Добавление ng-disabled=»$ctrl.model» отключит выбор до тех пор, пока «x» не очистит $ ctrl.model. После снятия флажка выбор будет снова включен, и можно будет сделать новый выбор.

Единственное, о чем я могу подумать после беглого просмотра, это преобразовать ng-options в и использовать ng-disabled для фактического элемента option. В документации говорится, что вы можете скрыть отключенные параметры, поэтому, если, например, вы должны были выбрать ОПЦИЮ 1, а ОПЦИЯ [2-4] была отключена, они будут удалены из списка.

Я нашел плунжер с версией 1.0, но он не работает. Если сделать параметры отключенными, они по-прежнему будут отображаться в списке, хотя при их выборе они становятся неопределенными. Возможно, обновлена более новая версия, чтобы фактически удалить их.

Комментарии:

1. Можете ли вы опубликовать HTML-код? Так будет легче понять, что происходит.

2. Смотрите мой последний плунжер. он работает так, как я думаю, вы этого хотите. Похоже, вы используете какую-то другую директиву, а не только стандартный выбор. Добавляет ли эта директива x? Если это так, я понимаю, почему он также выделен серым цветом. Я прошу прощения за неправильное прочтение исходного вопроса.