禁用角度工厂对象的重新加载

时间:2014-09-03 03:28:36

标签: angularjs routing factory

我有一个带有大量问题的测试(168)所以我正在使用路由和工厂来创建一个包含测试的所有问题和答案的对象,但我有一个问题,一切都很好用户没有重新加载,当用户点击重新加载时,所有问题和答案都会丢失。

我尝试使用缓存工厂进行相同操作,但同样的情况是重新加载时对象丢失了。

这是我的代码:

(function(){
    var app = angular.module('psicoTestsApp', ['ngRoute']);

    app.config(['$routeProvider', function($routeProvider) {
        $routeProvider.
            when('/intro', {
                templateUrl: 'partialsKuder/kuderIntro.html',
                controller: 'IntroCtrl'
            }).
            when('/detalles/:paginaId', {
                templateUrl: 'partialsKuder/kuderDetail.html',
                controller: 'PreguntaDetalleCtrl'
            }).
            otherwise({
                redirectTo: '/intro'
            });
    }]);

    app.factory("appInfo", function(){
        return {};
    });


    app.controller('IntroCtrl', ['$scope', '$http', 'appInfo', function ($scope, $http, appInfo) {
        $scope.appInfo = appInfo;

        $http.get('preguntas.json').success(function(data) {
            $scope.appInfo.preguntas = data;
        });

    }]);

    app.controller('PreguntaDetalleCtrl', ['$scope', '$routeParams', '$http', 'appInfo', function($scope, $routeParams, $http, appInfo) {
        $scope.appInfo = appInfo;
        $scope.preguntas = $scope.appInfo.preguntas;

        $scope.paginaId = parseInt($routeParams.paginaId);
        $scope.siguiente = $scope.paginaId + 1;

        $scope.pregunta1 = $scope.preguntas[($scope.paginaId * 4) + 0];
        $scope.pregunta2 = $scope.preguntas[($scope.paginaId * 4) + 1];
        $scope.pregunta3 = $scope.preguntas[($scope.paginaId * 4) + 2];
        $scope.pregunta4 = $scope.preguntas[($scope.paginaId * 4) + 3];

    }]);

})();

那么有没有办法让它像饼干一样?所以我不会丢失重新加载的信息?或者我可以在表单中禁用重新加载吗?

由于

1 个答案:

答案 0 :(得分:0)

是的,正如PSL指出的那样,您无法对用户点击页面上的重新加载做任何事情。这类似于重新启动的计算机或正在重新启动的应用程序。如果您以某种方式存储会话信息(ngStorage是一种好方法,或者您可以使用会话cookie,或者您可以存储在后端),则无法在重新加载事件中真正保留数据。