2015-03-10 2 views
5

ich einen Angular-Dienst haben, wie folgt aussieht:Wie man Daten in Angular Dienst anhalten durch Aktualisierung der Seite

:

var lunchrServices = angular.module('lunchrServices', []); 

lunchrServices.service('authService', function() { 
    var user = null; 

    this.login = function (userEmail) { 
     user = userEmail; 
    }; 
    this.logout = function() { 
     user = null; 
    }; 
    this.currentUser = function(){ 
     return user; 
    } 

}); 

ich auf der Hauptseite meiner Anwendung wie so verwenden Sie diesen Dienst auf einem Controller

var lunchrControllers = angular.module('lunchrControllers', []); 

lunchrControllers.controller('MainPageController', ['$scope', '$http', '$state', 'authService', 
    function ($scope, $http, $state, authService) {  
     $scope.logIn = function() {  
      $http.post('/api/users/authenticate', {email: $scope.email, password: $scope.password}). 
       success(function (data, status, headers, config) { 

        // lines of interest 
        authService.login($scope.email); 
        $state.go('users'); 
       }). 
       error(function (data, status, headers, config) { 
        $scope.errorMessages = data; 
        $scope.password = ""; 
       }) 
     } 
    }]); 

Mit dem users Zustand Anzeige der folgenden (I ui-router bin mit diesen Steckern in einem ui-view):

div(class='container') 
    h1 Welcome {{user}} 

    // other stuff 

Der Controller für diese Seite wie folgt aussieht:

lunchrControllers.controller('UserController', ['$scope', '$http', '$state', 'authService', 
    function ($scope, $http, $state, authService) { 
     $scope.user = authService.currentUser(); 

     //other stuff 
    }]); 

Wenn der Benutzer auf dieser Seite durch den Aufruf $state.go('users') genommen, {{user}} korrekt ausgefüllt ist.

Das Problem ist jedoch, dass das Aktualisieren der Seite nun {{user}} leer ist. Wie kann ich die Daten, die im Service gespeichert sind, durch Seitenaktualisierungen erhalten?

Antwort

6

Sie können einen Cookie setzen oder localStorage verwenden. Es gibt eine $cookies service in eckigen.

Für eine lokale Speicherlösung müssen Sie googeln.

Schieben Sie das Benutzerobjekt in ein Cookie, das niemals abläuft, und versuchen Sie dann, es von dort zu lesen, bevor Sie es beim nächsten Laden der Seite erneut anfordern.

+0

Herzlichen Glückwunsch zu Ihrem 20k Post. –

+3

Danke! und jetzt habe ich nichts anderes zu entsperren, so gehe ich ins Bett :) – mkoryak

+0

Lokale Speicherlösung: http://StackOverflow.com/Questions/18247130/How-do-Istore-Data-in-local-Storage-use -angularjs –

Verwandte Themen