У меня есть элемент <select>
, который использует ng-options
для создания списка выбора и, надеюсь, устанавливает для выбранного значение ng-model
. Вот мой html:
<td style="text-align:center">
<ng-form name="IsTobaccoForm">
<select name="Input" required ng-model="dep.IsTobacco" ng-options="item.value as item.text for item in yesNoList"></select>{{dep.IsTobacco}}
<span class="alert-error" ng-show="IsTobaccoForm.Input.$error.required"><strong>*Required</strong></span>
</ng-form>
</td>
Мой контроллер содержит следующий код:
$scope.yesNoList = [{ value: true, text: 'Y' }, { value: false, text: 'N'}];
Если значение IsTobacco
элемента равно true, значение установлено правильно и все в порядке. Однако, если оно ложно, появляется требуемая ошибка, даже если {{dep.IsTobacco}}
отображается как ложное. Действительно странная часть заключается в том, что если я изменяю выбранный элемент в списке на true, он работает нормально, однако, если я устанавливаю для него значение false, в список добавляется новый пустой элемент, и этот пустой элемент выбирается.
Если кажется, что проблемы не заключаются в строках, опубликованных выше, я с удовольствием опубликую больше кода.
Спасибо!
EDIT: я также использовал отладчик Chrome и увидел, что когда данные инициировались в Angular, значение IsTobacco
было равно false
.
Редактировать 2: Если кто-то, кто просматривает это, не знаком с AngularJS, я определенно рекомендую прочитать эти 2 статьи: часть 1 & часть 2. Это обзор форм AngularJS.
false
интерпретируется как отсутствиеngModel
при использовании сrequired
- github.com/angular/angular.js/issues/2436. Одним из обходных путей может быть использование вместо этого строки «true» и «false». - person Dan   schedule 18.06.2013ng-true-value
иng-false-value
. Но я предполагаю, что это было либо так, либо принудительно использовать неистинные и неложные значения для этих атрибутов для каждого флажка, и это был лучший выбор. - person Dan   schedule 18.06.2013ng-options
с флажками. - person PFranchise   schedule 18.06.2013