我想动态更改每个输入标签的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" />
但是,我希望这是动态的,因为我不知道期望什么属性名称。
答案 0 :(得分:3)
只需使用关联索引:
<input type="range" value="{{value}}" min="0" max="4" ng-model="items[0][key]" />
换句话说,您始终可以通过关联数组访问变量。以下是等效的:
item[0].pigs
item[0]['pigs']
您可以使用它,因为您知道转发器中的key
。