我收到一个服务器端的对象,即一个键值数组。我想以Angular形式绑定它,并能够修改值(简单)和键。挑战是当修改密钥时,关联的值必须保持链接。
我试过了:
<div ng-repeat="(type, value) in estate.extraServices track by $index">
<input ng-model="type"> <input ng-model="estate.extraServices[type]">
</div>
但是当第一个输入改变时,一个新的行被添加到地图中,而新的一个没有链接到新的一个。
我的目标是避免使用范围函数来解决这个问题,所以我没有太多希望,但谁知道呢!
如果无法对键进行绑定,我可能会将对象结构更改为Pair对象数组(2属性:键和值)
<div ng-repeat="pair in array">
<input ng-model="pair.key"> <input ng-model="pair.value">
</div>
答案 0 :(得分:1)
您无法将输入绑定到实际的属性名称。对象属性名称无法动态更改
然而,您的第一个示例可以正常更新值
<div ng-repeat="(type, value) in estate.extraServices track by $index">
{{type}} <input ng-model="estate.extraServices[type]">
</div>
对于添加键,您需要使用未绑定到该对象的其他输入来向对象添加新键。然后使用事件处理程序使用更新对象的函数
删除密钥相同,使用可执行delete object[key]
根据对象的使用方式,更改为具有相同键名结构的对象数组可能最简单
的 DEMO 强>