Javascript AngularJS通过服务传递数据,但通过页面刷新丢失数据

Javascript AngularJS通过服务传递数据,但通过页面刷新丢失数据,javascript,angularjs,Javascript,Angularjs,当用户点击浏览器上的“刷新”按钮时,使用工厂(或服务)将一些数据从控制器a传递到控制器B有问题。我可以成功地从控制器A设置数据并从控制器B获取数据,但是当我在控制器B的视图中时,如果我点击“刷新”,我将丢失数据并获得“未定义”。 我需要使用$localStorage来解决问题,知道吗?怎么了 服务工厂非常简单,我有一个类似的对象: var obj = {}; 然后我有两种方法: return{ getObj: function(){return obj;}, setObj: funct

当用户点击浏览器上的“刷新”按钮时,使用工厂(或服务)将一些数据从控制器a传递到控制器B有问题。我可以成功地从控制器A设置数据并从控制器B获取数据,但是当我在控制器B的视图中时,如果我点击“刷新”,我将丢失数据并获得“未定义”。 我需要使用$localStorage来解决问题,知道吗?怎么了

服务工厂非常简单,我有一个类似的对象:

var obj = {};
然后我有两种方法:

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

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

如果用户点击页面重新加载,浏览器上永远不会有持久性。
有很多方法可以解决这个问题,例如WebStorage API(HTML5)。

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

var obj = {};
重新初始化


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

这是正常行为。当用户单击“刷新”时,他需要新数据。谢谢。我将使用localStorage:)可以使用$cookies或$localStorage吗,因为这不安全,任何人都可以在浏览器开发工具的资源选项卡中看到,或者我只是混淆了?视情况而定,如果要将每个请求的cookie数据发送到服务器,那么使用cookie不是一个好方法,因为每个请求都可能会有不需要的cookie数据,而使用localStorage则是一个好方法。关于安全性,您可以加密cookies。