我正在从网页中启动模态,并对从父级传递的数组进行一些更改,但是在关闭模态后,在将更新结果发送回之前,我的父范围对象正在更新。如果用户改变主意不更新,然后取消模式,则我不希望这些更改在我的父控制器上显示
父控制器代码:
const modalInstance = $ modal.open({
templateUrl:“ / app / modal.html”,
控制器:“ modalController”,
controllerAs:“模态”,
解决:{
mappingData:()=> parentCntrl.groupData
}
});
modalInstance.result.then(result => {
if (result) {
parentCntrl.groupData = result;
}
});
子控制器代码:
modal.ok =()=> {
$ modalInstance.close(modal.mappedData);
};
modal.close =()=> {
$ modalInstance.close();
};
最佳答案
由于要传递的数据是非原始类型,因此不是数字或字符串,因此将通过引用将其复制到内存中。
您应该复制数据并在模态中使用复制的版本,并在保存模态时使用该复制的版本将所有更改合并回父控制器中的原始对象
在这里Using AngularJS "copy()" to avoid reference issues询问了一个非常相似的问题,以及如何使用angular.copy()避免引用问题