页面刷新后数据将消失,

时间:2015-04-06 14:16:28

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

现在我正在使用服务将数据从视图传递到其他视图(也是不同的控制器),在视图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');
}

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

2 个答案:

答案 0 :(得分:4)

如果用户刷新页面,脚本将在浏览器中新加载。所以无论你得救了什么都会丢失。

如果要保留,则必须将数据存储在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;
};

答案 1 :(得分:-1)

这不是一个错误,这是正常的。你可以使用HTML5存储,存储时间到期。