AngularJS使用服务传递数据,但页面刷新时丢失了数据

时间:2015-10-15 13:22:44

标签: javascript angularjs

当用户在浏览器上点击刷新时,我使用工厂(或服务)将一些数据从控制器A传递到控制器B时出现问题。我可以成功设置来自控制器A的数据并从控制器B获取数据,但是当我在控制器B的视图中,如果我点击刷新,我丢失了数据,我得到了一个"未定义&# 34 ;. 我需要使用$ localStorage来解决,任何想法?怎么了?

服务工厂非常简单,我的目标就像:

var obj = {};

然后我有两种方法:

    return{
getObj: function(){return obj;},
setObj: function(data){ obj = data;}
    };

我的控制器A使用setObj,而控制器B使用getObj。我第一次运行它时,一切运行良好,但是当我在控制器B视图上时,我在页面刷新时丢失了数据。

2 个答案:

答案 0 :(得分:1)

是的,您的数据将在页面刷新时丢失,这是正常的。刷新页面时,与当前页面关联的服务和控制器会重新加载,因此数据会重置,或者在您的情况下会重置此对象

var obj = {};

再次重新初始化。

你可以在cookie中存储localStorage中的持久数据,我建议你使用localStorage因为大小而且因为如果你使用cookies,那么对于每个ajax请求,cookie数据也将会去,这不是建议。

答案 1 :(得分:0)

如果用户点击页面重新加载,你永远不会持久留意。 有许多方法可以解决此问题,例如WebStorage API(HTML5)。