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

AngularJS passing data with services but lost data with a page refresh

本文关键字:数据 刷新 服务 AngularJS      更新时间:2023-09-26

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

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

var obj = {};

那么我有两个方法:

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

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

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

var obj = {};

被重新初始化。

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

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