在本地存储中持久化的角度工厂对象
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 {
,空格分隔变量和缺少赋值运算符=
。 - 在对象中,你可以用
=
但:
赋值,所以会产生错误{ 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;
});
- 如何在AngularJS工厂中正确声明对象属性
- 堆和工厂模式中的本地对象
- 返回一个新函数,而不是工厂中的对象
- 对象属性不是在工厂成员函数内部创建的
- AngularJS使用工厂来计算对对象的更改
- 角度工厂,对象范围混乱
- 从函数内部修改角度工厂对象
- 从角度工厂返回数据,返回对象后填充数据
- AngularJS获取工厂对象的实例
- 角度控制器/工厂返回未定义的对象
- JavaScript 对象原型未通过工厂返回
- 如何在 angularjs 工厂中使用 json 文件返回对象数组
- 在本地存储中持久化的角度工厂对象
- 来自工厂的 Angularjs 对象
- 如何将对象从使用PouchDB的工厂返回到控制器
- 无法使用工厂创建对象
- AngularJS 1.4x如何扩展工厂对象
- 将工厂/服务对象隔离到单个元素's指令
- Angular Js中的销毁工厂对象
- 如何区分工厂对象和函数