如何在Angular

时间:2016-03-01 14:00:53

标签: javascript angularjs dictionary data-binding

我收到一个服务器端的对象,即一个键值数组。我想以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>

1 个答案:

答案 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