屋に行く:http://plnkr.co/edit/xAgm0ny6yAB8spd5Oiai?p=preview
あなたはおそらくこれを単純化し、彼らが変更された場合見ると、繰り返しごとに1つの更新ボタンにそれを減らすために非表示フィールドの元の値を格納するが、これはスタートですでした!
<div ng-repeat="(k,v) in myCtrl.myObject">
<input type="hidden" ng-model="k">
<div>
Key: <input ng-model="newKey" ng-value="k" />
<button ng-click="myCtrl.updateKey(k, newKey, v)">Update</button>
</div>
<div>
Value: <input ng-model="v" />
<button ng-click="myCtrl.updateValue(k,v)">Update</button>
</div>
<hr />
</div>
と機能:
vm.updateKey = function(k, newKey, v) {
// newKey will be undefined if nothing changed
// Check to see if it changed
if(k != newKey && newKey !== undefined) {
// If it's empty... delete it
if(newKey != '') {
vm.myObject[newKey] = v;
}
delete vm.myObject[k];
}
};
vm.updateValue = function(k, v) {
vm.myObject[k] = v;
};
あなたが考慮すべきいくつかの他の考慮事項は次のとおりです。何か別のを使用して新しいプロパティ名の競合か?また、上記の私のコメントはundefined
に設定することでは不十分です。 delete
キーワードを使用する必要があります。そうしないと、ng-repeatが正しく更新されません。
と思います。私は 'updateKey(k、v)'と 'updateValue(k、v)'という2つのメソッドを作成します。 updateKeyでは、 'cluster.properties [k] = undefined'を設定し、vを新しい' cluster.properties [k] 'に移動する必要があります。これは私が最初にそれについて考えるとき気になることです...それは面白い概念です。私はこれを試してみたい! – Zach