在html标记中动态更改ng-model的名称

时间:2013-11-15 01:41:21

标签: javascript jquery html json angularjs

我想动态更改每个输入标签的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" />

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

1 个答案:

答案 0 :(得分:3)

只需使用关联索引:

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

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

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

您可以使用它,因为您知道转发器中的key