2

我似乎无法让我的多个下拉菜单工作。

<div ng-repeat="i in [0,1,2,3,4] track by $index">
    <select ng-model="myArray[i]" ng-options="someList"></select>
</div>

在 html 中,结果是 ... ng-model="myArray[i] 而不是 ng-model="myArray[0] 等。

我试过大括号,但它不起作用。最接近的是 ng-model="myArray['{{ i }}'] 但这并不是我真正想要的。

编辑:这是一个小提琴来说明。

http://jsfiddle.net/dpkzzyug/1/

您需要检查 HTML 以查看结果字面上写出 i(或在本例中为 $index)而不是值。

4

2 回答 2

2

您拥有的代码有效,但问题是myArray该范围是本地的ng-repeat。您需要确保它myArray存在于此范围之外。

像下面这样的东西会起作用:

<div ng-app ng-init="someList=[1,2,3]; myArray = []">
    <div ng-repeat="i in [0,1,2,3,4] track by $index">
        <select ng-model="myArray[i]" ng-options="i for i in someList"></select>

http://jsfiddle.net/778x0pm0/1/

我个人更喜欢使用这种controller as语法,因为这样会更清楚一点:

<div ng-app=app ng-init="someList=[1,2,3]">
    <div ng-controller="ctrl as ctrl">
        <div ng-repeat="i in [0,1,2,3,4] track by $index">
            <select ng-model="ctrl.myArray[i]" ng-options="i for i in someList"></select>

http://jsfiddle.net/778x0pm0/

于 2014-08-25T21:43:22.723 回答
0

我刚刚意识到,即使角度的逻辑仍然有效,html 也会写出 i / $index 。我在其他地方遇到了问题,并认为是因为这个。

于 2014-08-25T21:59:08.807 回答