在过去的几周里,我一直在使用AngularJS,而真正困扰我的一件事是,即使尝试了所有置换或http://docs.angularjs.org/api/ng规范中定义的配置,.directive:select,我仍然得到一个空选项作为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而不进行多重选择,那看起来就很奇怪。
option当ng-model传递给的一组选项中不存在被引用的值时,将生成空值ng- options。这样做是为了防止意外选择模型:AngularJS可以看到初始模型是未定义的还是未在选项集中,并且不想自行决定模型的值。
option
ng-model
ng- options
如果要摆脱空选项,只需在控制器中选择一个初始值,例如:
$scope.form.type = $scope.typeOptions[0].value;
这是jsFiddle:http : //jsfiddle.net/MTfRD/3/
简而言之:空选项意味着没有选择有效的模型(有效的意思是:从选项集中)。您需要选择一个有效的模型值来摆脱此空选项。