簡體   English   中英

持久存儲在本地存儲中的角度工廠對象

[英]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 通常,字符串化不會考慮方法,因為其他語言導入方法沒有意義。

問題:

  1. var default values { ,空格分隔的變量,缺少賦值運算符=
  2. 在對象中,您可以使用= 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM