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 に答える