2014-09-03 81 views
0

我有一個測試大量的問題(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]; 

    }]); 

})(); 

那麼,有沒有辦法讓它像一個餅乾嗎?所以我不會在重新加載時丟失信息?或者我可以在表單中禁用重新加載?

感謝

+2

你可能想看看[ngStorage](http://ngmodules.org/modules/ngStorage) – PSL 2014-09-03 03:34:52

+0

謝謝,ng存儲工作怪異,所以我嘗試ng-cookies,但信息最終成爲一個大cookie,所以我終於改變了每次都去服務器。 – 2014-09-07 16:56:27

回答

0

呀,因爲PSL指出,你不能真正做到對頁面上的用戶打重裝任何東西。這與正在重新啓動的計算機或重新啓動的應用程序類似。如果您以某種方式存儲會話信息(ngStorage是一種好方法,或者您可以使用會話cookie,或者您可以存儲在後端),那麼您無法在重新加載事件中真正保存數據。