我调用服务器并保存一些内容,成功保存后,我需要用新值更新json数组对象。这是我的一些代码
[
{
"id": 1,
"uuid": "ce54acea-db20-4716-bceb-2f3deb1b2b86",
"name": null,
"order": 1,
"children": []
}
]
我得到了一个对象数组,它们也可以相互嵌套。
编辑特定对象后,我可以选择将新值保存到服务器。按下“保存”按钮后,在向服务器发送数据之前,我存储对正在编辑的对象的引用。我将此参考存储在
selectNode = function(clickedNode) {
this.selectedNode = clickedNode
this.tempNode = _.clone(clickedNode)
}
我这里有一个temp对象,因为用户也可以按Cancel按钮,这意味着需要讨论任何更改。因此,我引用了正在编辑的对象,然后创建了tempNode对象,我实际编辑了该对象,并在保存时将其推送到服务器。
我的问题是,成功保存后,我还想更新引用对象中的所有值。
就在上面,我只有很少的值,但在我的应用程序中,每个节点都有很多值,所以我不想这样做
this.http
.put("/api/manage/v1/"+this.tempNode.uuid, this.tempNode)
.map(res => res.json())
.subscribe((data) => {
this.selectedNode.name = this.tempNode.name
this.selectedNode.order = this.tempNode.order
... and so on, this list could get long and not manageable after while
}, (error) => {
console.log(error)
}
);
我还尝试在相同的位置执行此操作,将上述内容替换为
this.selectedNode = _.merge({}, this.selectedNode, this.tempNode);
但这会破坏引用并创建新对象,因此json数组中的原始对象永远不会更新,ofc也不会在屏幕上更新任何内容。
有没有一种方法可以自动执行此操作
this.selectedNode.name = this.tempNode.name
this.selectedNode.order = this.tempNode.order
this.selectedNode.etc= this.tempNode.etc
this.selectedNode.etc= this.tempNode.etc7
到一行代码,其中所有值都复制到引用的对象,而不使用新对象破坏引用?