小编典典

为什么 AngularJS 在选择中包含一个空选项?

all

过去几周我一直在使用
AngularJS,而真正困扰我的一件事是,即使在尝试了http://docs.angularjs.org/api/ng规范中定义的所有排列或配置之后.directive:select,我仍然得到一个空选项作为选择元素的第一个子元素。

这里是玉:

select.span9(ng-model='form.type', required, ng-options='option.value as option.name for option in typeOptions');

这里是控制器:

$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>

我需要做什么才能摆脱它?

PS:没有这个也可以,但是如果你使用 select2 而没有多重选择,它看起来很奇怪。


阅读 104

收藏
2022-03-04

共1个答案

小编典典

当传递给的一组选项中不存在option由 引用的值时,将生成空值。这样做是为了防止意外选择模型:AngularJS
可以看到初始模型未定义或不在选项集中,并且不想自行决定模型值。ng-model``ng-options

如果您想摆脱空选项,只需在控制器中选择一个初始值,例如:

$scope.form.type = $scope.typeOptions[0].value;

这是 jsFiddle:http: //jsfiddle.net/MTfRD/3/

简而言之:空选项意味着没有选择有效的模型(有效的意思是:从选项集中)。您需要选择一个有效的模型值来摆脱这个空选项。

2022-03-04