编辑嵌套的复制对象



这是我的数据结构。 您可以看到每个房屋都包含一个可变长度的房间数组,这些房间也是对象:

数据结构:

houses = [{      
id: 1,
age: 50,
cost: 100000,
rooms: [{
id: 1,
type: basement,
sqft: 600,
},{
id: 2,
type: bedroom
sqft: 450
}]
}]

我使用ng-repeat在网格中显示此信息,每行都有一个编辑按钮。 当用户编辑房屋时,他们会看到一个屏幕,他们可以编辑数据的临时副本,并且有一个保存按钮。 如果他们不保存,我会恢复到原始数据。 一旦在房屋上进入编辑模式,他们就可以在单独的子屏幕中编辑和保存各个房间。 我不确定如何正确保存这些数据。

房屋和房间都有自己的保存按钮。 如果他们保存房间数据,我必须将临时嵌套数据复制到原始房间对象上,但我不知道如何访问该对象,因为他们一直在编辑临时对象。 也许他们已经更改了一些房屋属性,但只在其中一个房间上点击了"保存",所以我不能只复制整个临时房屋对象。

例如,当他们按下保存后,如何访问原始房间 #2? 有没有办法使用$index对原始数据对象进行更改? 我需要保存房间而不保存基本房屋对象。 即只应保存嵌套对象。

我不知道我是否可以使用该$index因为我的数据也可以在编辑行之前进行排序和过滤。

最简单且可扩展的解决方案是,将"id"添加为每个房间,门,浴室或窗户的属性。或者只是在迭代此对象时将"index"作为属性。

因此,您将获得用户无法更改的对象的id或索引,并且可以识别要覆盖的正确对象。

单击编辑时创建对象的副本

ng-click=edit(id)
$scope.edit(id){
var result = OriginalArray.filter(function( obj ) {
return obj.id == id;
});
$scope.copy=angular.copy(result [0])
}

然后使用此对象编辑数据,一旦编辑完成,用户将按保存按钮将对象复制回房间数组;

result[0]=$scope.copy;

而且您不能在此处使用$index因为更改应在原始数组中完成。

最新更新