【发布时间】:2020-04-05 20:50:19
【问题描述】:
我有一个<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 值为真,则该值设置正确,一切正常。但是,如果它为 false,则会出现所需的错误,即使 {{dep.IsTobacco}} 呈现为 false。真正奇怪的部分是,如果我将列表中的选定项更改为 true,它可以正常工作,但是如果我将其设置为 false,则会将一个新的空白项添加到列表中并选择该空白项。
如果问题似乎不在上面发布的行中,我很乐意发布更多代码。
谢谢!
编辑:我还使用了 chrome 调试器,看到在 Angular 中启动数据时,IsTobacco 的值等于 false。
编辑 2: 如果有人看到这篇文章是 AngularJS 的新手,我绝对推荐阅读这两篇文章:part 1 和 part 2。它们是 AngularJS 表单的概述。
【问题讨论】:
-
由于某种原因(可能与复选框有关?),
false的值在与required- github.com/angular/angular.js/issues/2436 一起使用时被解释为缺少ngModel。一种解决方法是改用字符串“true”和“false”。 -
@sh0ber 哦,伙计。这不好哈哈。感谢您提供这方面的信息。我一直在强迫自己不要破解解决方法,假设是我缺乏角度知识导致了这个问题。
-
没问题,我自己没有意识到这一点。考虑到复选框可以采用
ng-true-value和ng-false-value属性,它可能不需要这样。但我想要么是这样,要么在每个复选框上强制使用这些属性的非真和非假值,这是更好的选择。 -
是的,这绝对是有道理的。将
ng-options与复选框一起使用时,我没有考虑过后果。 -
现在作为答案发布:)
标签: javascript html angularjs ng-options angularjs-forms