在$ scope上设置ng-options的选定值

Snæ*_*ørn 1 angularjs ng-options

我想得到/设置范围下拉列表的选定索引+偏移量.

因此,当我选择名为"Third"的选项时,该$scope.selectedIndex值应为3.但它是obj3.

这是我到目前为止所提出的.我希望track by能解决它,但它没有:(

调节器

$scope.foos = [obj1, obj2, obj3]
Run Code Online (Sandbox Code Playgroud)

视图

<select data-ng-model="selectedIndex"
        data-ng-options="foo.name for foo in foos track by foos.indexOf(foo) + 1">
    <option value=""></option>
</select>
Run Code Online (Sandbox Code Playgroud)

生成的视图(生成的值与预期一致)

<select data-ng-model="selectedIndex" data-ng-options="foo.name for foo in foos track by foos.indexOf(foo) + 1">
    <option value="" class=""></option>
    <option value="1" label="First">First</option>
    <option value="2" label="Second">Second</option>
    <option value="3" label="Third">Third</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我不能使用数组技巧

ng-options="idx as choice for (idx, choice) in choices"
Run Code Online (Sandbox Code Playgroud)

因为idx需要被抵消 +1

Plnkr

Jam*_*ley 5

使用值作为名称语法:

data-ng-options="foos.indexOf(foo) + 1 as foo.name for foo in foos"
Run Code Online (Sandbox Code Playgroud)

https://plnkr.co/edit/juFXFzlpXmWuS1ukde5R?p=preview