我想动态更改每个输入标签的 ng-model 名称(在 html 输入标签中)。例如,如果我的 json 文件如下所示:
[{cows: 0, pigs: 14, roosters: 2, horses: 23, goats: 21}]
并且我正在使用 ng-repeat 迭代 json 对象(“items”)的属性,我应该为 ng-model="????"添加什么内容将特定输入与特定对象属性(动物)绑定(bind)?
<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" />
但是,我希望这是动态的,因为我不知道需要什么属性名称。
最佳答案
只需使用关联索引:
<input type="range" value="{{value}}" min="0" max="4" ng-model="items[0][key]" />
换句话说,您始终可以通过关联数组访问变量。以下是等效的:
item[0].pigs
item[0]['pigs']
您可以利用这一点,因为您知道中继器中的 key
。
关于javascript - 动态更改 html 标签中 ng-model 的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19991986/