这是代码的样子
<select ng-model="nullableInt">
<option></option>
<option value="0">First option</option>
<option value="1">First option</option>
<option value="2">First option</option>
</select>
当nullableInt为null时,生成的html为
<select ng-model="nullableInt">
<option></option>
<option value="? object:null ?"></option>
<option value="0">First option</option>
<option value="1">First option</option>
<option value="2">First option</option>
</select>
在这里的plunkr中重现:http://plnkr.co/edit/05pBEMJppmkrn3nFgYdk?p=info
值得一提的是,我试图避免使用ng-options
,为AngularJS创建一个端点来消耗一些实际上不会经常变化的数据(如果有的话)似乎有些过分。
答案 0 :(得分:17)
正如Jorge Rodrigues dos Santos所说,对于较新版本的角度,这应该以不同的方式处理。以下是角度1.6.3
的当前文档可选地,单个硬编码元素,设置值 到一个空字符串,可以嵌套到元素中。这个 然后,element将表示null或“not selected”选项。看到 示例如下。
https://docs.angularjs.org/api/ng/directive/select
Angular正在创建一个表示空值的新选项。它没有找到您在HTML中提供的选项之一。
要绑定到null,请在第一个选项
上设置value =“null”<option value="null"></option>
答案 1 :(得分:1)
接受的答案对我不起作用,因为我的属性可能是空白,空或未定义。如果您使用的是版本1.3+,则可以使用getterSetter将值强制为空白。
我正在处理字符串值。您还必须在函数中处理0或其他有效的假值。
$scope.nullableIntCoerced = function(n) {
return arguments.length ? ($scope.nullableInt = n) : ($scope.nullableInt || "");
}
<select ng-model="nullableIntCoerced" ng-model-options="{getterSetter:true}">
<option value=""></option>
...
https://code.angularjs.org/1.3.20/docs/api/ng/directive/ngModel
答案 2 :(得分:1)
对于更新版本的Angularjs,使用<div id="squares">
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
</div>
<div id="button">
<button>Click me!</button>
</div>
作为空值
答案 3 :(得分:0)
以下解决方案为我解决了问题。
这里的问题是当使用ng-model时,它会添加一个值为“?”的默认选项。如果不使用ng-model,则无法使用ng-change来获取当前选择。我实际创建了一个onChangeSelection(),我们可以在其中设置下面的defaultSelected属性
$scope.onChangeSelection = function(id) {
document.getElementById(id)[0].defaultSelected = true;
$scope.selected = $('#'+id).val();
}
<select id="mySelect" ng-model="nullableInt" ng-options="option.value as option.text for option in arrayContents track by option.value" ng-change="{{onChangeSelection(id)}}" required>
<option value="" ng-if="false"></option>
</select>
这将从选项列表中排除默认选项,并将第一个值设为defaultSelected。