#javascript #angularjs #jquery-chosen #angular-chosen
#javascript #angularjs #jquery-выбрано #angular-выбрано
Вопрос:
Мне нужна помощь в следующем сценарии:
Я использую выпадающие списки с одним выбором в таблице. Каждая строка имеет свой собственный выпадающий список. Теперь есть 2 варианта изменения выбора:
- Нажмите на значок отмены выбора (‘x’) (работает нормально — через ng-change).
- Откройте выпадающий список, выберите другое значение из списка. Переопределить предыдущее значение (хотя срабатывает 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? Если это так, я понимаю, почему он также выделен серым цветом. Я прошу прощения за неправильное прочтение исходного вопроса.