0

我有一个<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 对此进行了测试。

4

1 回答 1

0

试试这个$scope.selection = $scope.items[$routeParams.id]; 官方的 angular jsfiddle

于 2015-04-17T16:12:46.907 回答