说我有这个:
$scope.items = ["foo", "bar", "baz"];
$scope.index = 1;
如何将其绑定到<select>
?
我尝试了<select ng-model="index" ng-options="i for i in items">
,但在加载时选择了空白选项。
这个:<select ng-model="items[index]" ng-options="i for i in items">
似乎最初起作用,但在更改选择时,项目[index]的值会发生变化,这显然不是我们想要的。
我的解决方法是将数组映射到{num,title}对,但该逻辑会使控制器混乱。
答案 0 :(得分:25)
尝试以下方法:
<select ng-model="index" ng-options="i as name for (i, name) in items">
如果您查看ng-options documentation,则会看到其中一个支持的表单
选择作为标签 数据
我们将其与(key, value)
分组相结合,您可以使用它来访问对象中的密钥(或者在这种情况下,是数组中的索引)。
修改:我看到了您所看到的同一问题。对角度文档的评论建议采用这种方法:
<select ng-model="index" ng-options="items.indexOf(item) as item for item in items">
哪种IMO不太干净,但似乎有用。