2015-10-15 31 views
1

当用户在浏览器上点击刷新时,我使用Factory(或服务)将控制器A的某些数据传递给控制器​​B时出现问题。我可以成功设置来自控制器A的数据并从控制器B获取数据,但是当我处于控制器B的视图中时,如果我点击刷新,则丢失了数据,并且出现“未定义”的数据。 我需要使用$ localStorage解决任何想法?怎么了?AngularJS将数据传递给服务,但页面刷新时丢失数据

服务工厂是很简单的,我有喜欢的对象:

var obj = {}; 

然后我有两种方法:

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

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

+0

这是正常行为。当用户点击刷新 - 他想要新的数据。 –

回答

1

是的,你的数据在页面刷新时会丢失,这是正常的。当您刷新页面,服务和控制器与您当前的页面重新加载或相关,从而导致数据被重置你的情况,这个对象

var obj = {}; 

被再次重新初始化。

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

+0

非常感谢。 – Lorenzo

+0

欢迎您 – Ritesh

+0

可以使用$ cookies或$ localStorage,因为这不安全,任何人都可以在浏览器开发工具的资源标签中看到,或者我只是感到困惑? – Rakeschand

0

如果用户点击页面重新加载,则永远不会在浏览器上持久存在。 解决此问题的方法有很多,例如WebStorage API(HTML5)。

+0

谢谢。我会用localStorage :) – Lorenzo