是否可以通过Angular.js中的索引将<select>绑定到数组?</select>

时间:2013-07-22 14:43:49

标签: arrays angularjs

说我有这个:

$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}对,但该逻辑会使控制器混乱。

1 个答案:

答案 0 :(得分:25)

尝试以下方法:

<select ng-model="index" ng-options="i as name for (i, name) in items">

如果您查看ng-options documentation,则会看到其中一个支持的表单

  

选择作为标签 数据

  • select是选择该项目时模型的值应该是什么
  • label是要显示的文字

我们将其与(key, value)分组相结合,您可以使用它来访问对象中的密钥(或者在这种情况下,是数组中的索引)。

修改:我看到了您所看到的同一问题。对角度文档的评论建议采用这种方法:

<select ng-model="index" ng-options="items.indexOf(item) as item for item in items">

哪种IMO不太干净,但似乎有用。