我有一个<select>
用来ng-options
填充选项的。选择的模型是一个字符串。在异步加载选项之前,我用路由参数填充字符串。
在控制器中:
$scope.selection = $routeParams.id; // optional, so defaults to undefined
$scope.items = [{id: "uuid1", name: "item 1"}, {id: "uuid2", name: "item2"}];
在模板中:
<select ng-model="selection" ng-options="item.id as item.name for item in items">
<option value="" disabled>-- please select --</options>
</select>
呈现的 html 如下所示:
<select ng-model="selection" ng-options="item.id as item.name for item in items">
<option value="" disabled>-- please select --</options>
<option value="0">Item 1</options>
<option value="1">Item 2</options>
</select>
当我转到没有 id route 参数的页面时,“-- please select --”被正确选择。当我在页面上执行其他操作时,选择框突然选择“第 1 项”但$scope.selection
仍然是undefined
.
我怀疑角度检查undefined
值是否等于选项“0”的值,所以它选择它。
我怎样才能防止这种情况?
我使用 angular 1.2.17(出于向后兼容性的原因),但我也用 1.3.0 对此进行了测试。