gpt4 book ai didi

javascript - AngularJS : rootScope object auto save

转载 作者:行者123 更新时间:2023-12-03 08:10:53 25 4
gpt4 key购买 nike

我目前正在开发一种 HTML 预览器。我正在开发一项新功能来自动保存最近的修改。

我有一个函数,它返回一个包含我想要保存的数据的对象

var saveSkin = function(){
var saveObj = {
"name" : $rootScope.skin.name,
"type": $rootScope.type,
"skin" : {
"name" : $rootScope.skin.name,
"td" : $rootScope.skin.td,
"client" : $rootScope.skin.client,
"aid" : $rootScope.skin.aid
},
"skinSettings" : {
"bgUrl" : $rootScope.skinSettings.bgUrl,
"bgColor" : $rootScope.skinSettings.bgColor,
"bannerHeight" : $rootScope.skinSettings.bannerHeight
},
"components" : $rootScope.components,
"exportCss" : $rootScope.exportCss,
"exportJs" : $rootScope.exportJs
};
return saveObj;
};

另一个函数(此处缩写)每 X 秒将此对象保存到另一个对象中。

var autoSave = function(){
$interval(function(){
creativeSave.push(saveSkin());
}, 3000);
};

问题是父对象内的所有对象都具有相同的值,就像每个对象都使用 rootScope 值自动更新一样,而我希望它们保留创建时的 rootScope。

如果您知道如何解决此问题,我将非常感激。谢谢,艾德里安

最佳答案

您的对象在不调用 saveSkin() 的情况下发生变化,可能是因为并非您使用的所有属性都是值类型,其中一些是指向对象的指针。

所以据我所知,你有两个选择:

1) 在 saveObj 中仅保存值类型

2)每次更新对象时克隆该对象,最简单的方法是(效率不是很高)

$scope.savedObject = JSON.parse(JSON.stringify(saveObj));

关于javascript - AngularJS : rootScope object auto save,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34154485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com