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

Sij*_*der 11 arrays angularjs

说我有这个:

$scope.items = ["foo", "bar", "baz"];
$scope.index = 1;
Run Code Online (Sandbox Code Playgroud)

我如何将其绑定到<select>

我试过了:<select ng-model="index" ng-options="i for i in items">但是在加载时选择了一个空白选项.

这:<select ng-model="items[index]" ng-options="i for i in items">似乎最初工作,但在更改选择时,项目[索引]的值发生了变化,这显然不是我们想要的.

我的解决方法是将数组映射到{num,title}对,但该逻辑使控制器混乱.

Joh*_*ter 25

请尝试以下方法:

<select ng-model="index" ng-options="i as name for (i, name) in items">
Run Code Online (Sandbox Code Playgroud)

如果您查看ng-options文档,您将看到其中一个受支持的表单

选择作为标签阵列

  • select是选择该项时模型的值
  • label是要显示的文本

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

编辑:我看到你遇到的同样问题.对angular docs的评论建议采用这种方法:

<select ng-model="index" ng-options="items.indexOf(item) as item for item in items">
Run Code Online (Sandbox Code Playgroud)

哪个国际海事组织不是那么干净,但似乎有效.