过去几周我一直在使用 AngularJS,真正困扰我的一件事是,即使在尝试了所有排列或规范中定义的配置 http://docs.angularjs.org/api/ng.directive:select 后,我仍然得到一个空选项作为第一个 child 选择元素。
这是 Jade :
select.span9(ng-model='form.type', required, ng-options='option.value as option.name for option in typeOptions');
这里的 Controller :
$scope.typeOptions = [
{ name: 'Feature', value: 'feature' },
{ name: 'Bug', value: 'bug' },
{ name: 'Enhancement', value: 'enhancement' }
];
最后,这是生成的 HTML:
<select ng-model="form.type" required="required" ng-options="option.value as option.name for option in typeOptions" class="span9 ng-pristine ng-invalid ng-invalid-required">
<option value="?" selected="selected"></option>
<option value="0">Feature</option>
<option value="1">Bug</option>
<option value="2">Enhancement</option>
</select>
我需要做什么才能摆脱它?
P.S.:没有这个也能正常工作,但如果你使用 select2 没有多选,它看起来很奇怪。
最佳答案
当传递给 option
的一组选项中不存在 ng-model
引用的值时,会生成空的 ng-options
。这样做是为了防止意外的模型选择:AngularJS 可以看到初始模型未定义或不在选项集中,并且不想自行决定模型值。
如果您想摆脱空选项,只需在 Controller 中选择一个初始值,例如:
$scope.form.type = $scope.typeOptions[0].value;
这是jsFiddle:http://jsfiddle.net/MTfRD/3/
简而言之:空选项意味着没有选择有效模型(有效我的意思是:从选项集中)。您需要选择一个有效的模型值来摆脱这个空选项。
关于angularjs - 为什么 AngularJS 在选择中包含一个空选项?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12654631/