angularjs - 为什么 AngularJS 在 select 中包含一个空选项?

标签 angularjs

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

这是 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 而不进行多重选择,它看起来会很奇怪。

最佳答案

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

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

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

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

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

关于angularjs - 为什么 AngularJS 在 select 中包含一个空选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12654631/

相关文章:

android - ionic 清新剂 - 微调器未显示

AngularJS + Protractor 对中继器中的所有行值求和

angularjs - 输入中的 Angular 值绑定(bind)到模型变量

php - 如何使用Angularjs在mysql中获取特定id的数据

angularjs - 如何将 "cache dependency"设置为本地存储

javascript - 等待函数完成多个资源调用

angularjs - 如何强制 angular.js 接受绑定(bind)中的尾随空格?

javascript - AngularJS/Typescript 集成模式 - 范围方法

javascript - 由于 : Error: [$injector:nomod] http://errors. angularjs.org/1.2.26/$injector/nomod?p0=myApp,无法实例化模块 myApp

javascript - 应用类似于 html5 &lt;input&gt; 必需属性的选择菜单的表单验证