[英]Angular Factory Object Persisting Over Storing in Local Storage
我有一個需要在Angular 1.4.0中獲得幫助的問題。 我有一個工廠,工廠內有一個復雜的結構和方法,因此我可以通過調用該方法將工廠恢復到原始狀態。 工廠看起來像這樣。
angular.module('myApp').factory('itemFcty', function(){
var currentValues = {};
var default values {
a = 1,
b = 2,
resetData : function(){
currentValues = angular.extend(currentValues, defaultValues);
return currentValues
};
};
defaultValues.resetData();
return currentValues;
}); 為了將值添加到“ a”,我調用itemFcty.a = 2; 因此,當我想按需覆蓋所有值時,此方法效果很好。 但是,有人問我是否可以刷新保存數據。 所以我將對象字符串化為JSON。 像這樣:
localStorage.setItem('itemFcty',JSON.parse(itemFcty);
但是我遇到了障礙。 唯一要存儲在本地存儲中的數據是
{a = 1,b = 2,}
我可以通過以下方法重新添加該方法:
itemFcty.resetData = function(){return currentValues = angular.extend(currentValues, defaultValues);}
這是一個問題,現在工廠的功能與以前相同,因為我無法像以前那樣調用該函數並在默認值對象之外返回,因此我無法再為我的生活工作了將其添加回去,因為一切都直接進入整個對象。
您的幫助將不勝感激!
/ *************************編輯*********************** ****** /好的,所以我認為我沒有很好地解釋這一點。 我的工廠看起來和上面一樣。 用戶點擊刷新。 工廠存儲在本地存儲中。 我從本地存儲取回它。 但是這里的問題。 本地存儲之前看起來像這樣
angular.module('myApp').factory('itemFcty', function(){
var currentValues = {};
var defaultValues = {
a : 1,
b : 2,
resetData : function(){
angular.extend(currentValues, defaultValues);
// you don't have to return the values
} // <------you can't use ; in the object properties
};
defaultValues.resetData();
return currentValues;
});
現在,當我將數據從本地存儲中取出並送入工廠時,工廠看起來像這樣。
angular.module('myApp').factory('itemFcty', function(){
a : 1,
b : 2,
});
我可以重新添加重置數據功能,但是由於工廠不包含當前值或默認值,因此重置數據功能將無法使用。 因此,基本上,我在問如何使我的工廠與從本地存儲中重新加載數據后的外觀相同。
您是否從localStorage加載了變量? 另外,還有一個錯字,我會說var default values
。 通常,字符串化不會考慮方法,因為其他語言導入方法沒有意義。
問題:
var default values {
,空格分隔的變量,缺少賦值運算符=
。 =
but :
分配值,因此將產生錯誤{ a = 1, b = 2 }
。 您可以做的是:
angular.module('myApp').factory('itemFcty', function(){
var currentValues = {};
var defaultValues = { // <-------should have to be declared like this
a : 1, // = should be replaced with :
b : 2, // and here too.
resetData : function(){
angular.extend(currentValues, defaultValues);
// you don't have to return the values
} // <------you can't use ; in the object properties
};
defaultValues.resetData();
return currentValues;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.