2016-04-02 16 views
0

lade ich für ein Schulprojekt auf einer kleinen Web-App arbeiten, speichere ich Benutzerdaten auf local wie folgt aus:AngularJS - local nicht richtig

UserService.login($scope.user).then(function (response){ 
    if(response.data.Error){ 
     $scope.credentialsError = true; 
    }else{ 
     $rootScope.cliente = response.data.result; 
     localStorageService.set('cliente', $rootScope.cliente); 
     $location.path('/dashboard'); 
    } 
}); 

Solange ich in der Seite, alles Werke bleiben gut, der Benutzer ist immer noch in $ rootScope tun, es ist Sache. Das Problem kommt, wenn ich neu lade. Beim Start ich laufe dies:

angular.module('app-gp').run([ 
    "$rootScope", "localStorageService", "$state", function($state,localStorageService, $rootScope) { 
     $rootScope.cliente = localStorageService.get('cliente'); 
}]); 

, die die Benutzerdaten aus dem lokalen Speicher korrekt zu bekommen scheint. Wenn ich jedoch $ rootScope.cliente von einem Controller oder einer Vorlage anfordere, werde ich undefiniert.

Danke für Ihre Hilfe.

Antwort

0

Nach einer Weile gelang es mir, das Problem zu lösen. Es scheint, es war nie über die localStorageservice, was ich tat, das war neu ordnen:

angular.module('app-gp').run(["$rootScope", "localStorageService", "$state", function($rootScope, localStorageService, $state) { 

und es funktionierte ...

0

Bitte stellen Sie sicher, dass der localStorageService ordnungsgemäß funktioniert. Ich bin mir nicht sicher über die Implementierung von localStorageService, aber sei dir bewusst, dass das localStorage nur Zeichenfolgenwerte unterstützt und du response.data.result in string konvertieren musst. In Chrome können Sie Entwicklerwerkzeuge-> Registerkarte Ressourcen verwenden und den "Lokalen Speicher" betrachten und sehen, ob der Speicher tatsächlich stattfindet.

Idealerweise würde ich gepostet als Kommentar, aber ausreichend Ruf nicht auf dieser Seite, dass noch zu tun haben ..

+0

Es funktioniert, ich bin derzeit mit [dieser lokalen Speicherdienst] (https : //github.com/grevory/angular-local-storage) und wenn ich die Seite leite log ''rootScope.cliente = localStorageService.get (' cliente '); console.log ($ rootScope.cliente); 'und es ist das Objekt, das ich brauche. Allerdings bekomme ich undefiniert, wenn ich das Objekt aus meinen Vorlagen herausrufe – AldoJV

0

Ihr Code sieht könnte die Umsetzung der lokalen Speicherdienst als problematisch fein jedoch. Sie sollten den bekannten ngStorage-Dienst für diesen Job verwenden. https://github.com/gsklee/ngStorage