2016-04-19 19 views
0

Also versuche ich ein Objekt ($ rootScope.User) in der NavCtrl zu bekommen, nachdem der Benutzer sich anmeldet (also nachdem die onLogin Funktion ausgeführt wurde).

Aber ich mache etwas falsch und ich kann nicht herausfinden, wie es zu beheben ist. Ich denke, es könnte den Code lesen, bevor er einen Wert bekommt. Aber ich bin mir nicht wirklich sicher. Wenn mir jemand helfen könnte, wäre das toll!

Danke!

.controller('LoginCtrl', function (Backand, $state, $rootScope, LoginService, $ionicPopup, dataService) { 

    var login = this; 
    $rootScope.isLoggedin = null; 

    function signin() { 
     LoginService.signin(login.email, login.password) 
      .then(function() { 
      onLogin(); 
     }, function (error) { 
      console.log(error); 

      $rootScope.showAlert = function() { 
      var alertPopup = $ionicPopup.alert({ 
       title: 'Login Error', 
       template: error.error_description 
       }); 
      }; 

      $rootScope.showAlert(); 
     }); 
    } 

    function onLogin() { 
     $rootScope.$broadcast('authorized'); 
     $state.go('tabs.feed'); 
     login.username = Backand.getUsername(); 
     $rootScope.isLoggedin = true; 

     $rootScope.cUser = Backand.getUserDetails().$$state.value; 
     console.log($rootScope.cUser); 
    } 
}); 

.controller('NavCtrl', function($scope, $rootScope, Backand, dataService) { 

    function getUser() { 
     $scope.user = $rootScope.cUser; 
     console.log($scope.user); 
    } 

    getUser(); 
}); 

Antwort

1

vielleicht nicht die Antwort, die Sie suchen, aber vermeiden $rootScope mit Globals speichern

einen Dienst und injizieren sie

.factory('UserService', function() { 
    return { 
     user : {name:'anonymous'} 
    }; 
}); 

und dann in einem Controller:

.controller('NavCtrl', function($scope, UserService, Backand, dataService) { 
    $scope.user = UserService.user; 
} 
0

Es ist ein Tippfehler. Entfernen Sie die c aus der cUser eine Zeile über dem console.log($rootScope.User);

OR tun dies

console.log($rootScope.cUser); 
+0

Ich habe diesen Tippfehler behoben, nachdem ich die Frage gepostet habe und es immer noch nicht funktioniert ... –

0

Wenn Sie dies tun $state.go('tabs.feed') gibt es eine Chance, dass tabs.feed NavCtrl ruft an? Wenn ja, dann lesen Sie es, bevor Sie den Wert festlegen.

Verwandte Themen