2

我想为每个输入标签动态更改我的 ng-model 名称(在 html 输入标签中)。例如,如果我的 json 文件如下所示:

[{cows: 0, pigs: 14, roosters: 2, horses: 23, goats: 21}]

我正在使用 ng-repeat 遍历 json 对象(“items”)的属性,我应该为 ng-model="????" 将该特定输入与特定对象属性(动物)绑定?

<div ng-app="myApp" ng-controller="MainCtrl">
    <form class="idea item">
        <div ng-repeat="(key, value) in items[0]">
            <label>{{key}}</label>
            <input type="range" value="{{value}}" min="0" max="4" ng-model="????" />
        </div>
        <input type="submit" ng-click="save()" />
    </form>
</div>

如果我在不使用 ng-repeat 的情况下静态写出,输入将如下所示:

<input type="range" value="{{value}}" min="0" max="4" ng-model="items[0].cows" />
<input type="range" value="{{value}}" min="0" max="4" ng-model="items[0].pigs" />
<input type="range" value="{{value}}" min="0" max="4" ng-model="items[0].roosters" />
<input type="range" value="{{value}}" min="0" max="4" ng-model="items[0].horses" />
<input type="range" value="{{value}}" min="0" max="4" ng-model="items[0].goats" />

但是,我希望这是动态的,因为我不知道期望什么属性名称。

4

1 回答 1

3

只需使用关联索引:

<input type="range" value="{{value}}" min="0" max="4" ng-model="items[0][key]" />

换句话说,您始终可以通过关联数组访问变量。以下是等价的:

item[0].pigs
item[0]['pigs']

您可以利用它来发挥自己的优势,因为您知道key中继器中的 。

于 2013-11-15T02:32:20.250 回答