【问题标题】:Data will disappear after page refresh,页面刷新后数据会消失,
【发布时间】:2015-04-06 14:16:28
【问题描述】:

现在我正在使用服务将数据从视图传递到其他视图(也不同的控制器),在视图 A 中,我有控制器 CtrA,因为我用来传递数据的服务是:

.factory(
                'editreportservices',
                [
                        '$q',
                        'sessionId',
                        function($q, sessionId) {
                                var sharedata = {};
                                var org={};
                                function passed(data){
                                    sharedata = data;
                                };
                                function getsharedata(){
                                    return sharedata;
                                };
                                function passedorg(data) {
                                    org=data;
                                }
                                function getorg() {
                                    return org;
                                }
                                return{
                                    passed:passed,
                                    getsharedata:getsharedata,
                                    passedorg:passedorg,
                                    getorg:getorg
                                }               
                        }]);

在 CtrA 中,如果我点击一个按钮,我将为 editreportservices.passed(report) 设置值,例如:

$scope.goeditpage = function(report){if(report){
                            editreportservices.passed(report);
                            }
                            else{
                            report={}
                            editreportservices.passed(report);
                            };
                       $state.go('editreport');
}

它也将更改为视图 B,在视图 B 中,我可以使用 $scope.lin = editreportservices.getsharedata() 访问数据,它按预期工作。 但是有一个问题,我不确定这是否是一个错误,如果用户刷新页面,从 viewA 传递的数据会消失。这可能是一个糟糕的用户体验,无论如何我可以在从 VIewA 传递数据后将数据保留在 viewB 中吗?

【问题讨论】:

  • 这是预期的。如果刷新,则必须重新加载数据。解决方法是使用 localstorage 或 webdb

标签: angularjs model-view-controller angular-services


【解决方案1】:

如果用户刷新页面,脚本将在浏览器中重新加载。所以你保存的任何东西都会丢失。

如果要持久化,则必须将数据存储在 localStorage 或 cookie 中。

为您服务,

var sharedata = localStorage.getItem("shareData")?  JSON.parse(localStorage.getItem("shareData")) || {};
var org={};
function passed(data){
      sharedata = data;
      localStorage.setItem("shareData", JSON.stringify(sharedata));
};
function getsharedata(){
     return sharedata;
};

【讨论】:

  • 我知道原因,也知道使用 cookie 或 localstorage,但我想知道是否有“角度”的方式来做到这一点?
  • 唯一的问题是 Angular 有一个用于 localStorage 的包装器,称为 $localStorage,对于 cookie 也是如此。但是这里没有其他角度方式
猜你喜欢
  • 1970-01-01
  • 2014-03-27
  • 2023-03-20
  • 1970-01-01
  • 2016-10-03
  • 2013-05-01
  • 2016-06-22
  • 1970-01-01
  • 2021-07-03
相关资源
最近更新 更多