2016-04-19 4 views
0

Итак, я пытаюсь получить объект ($ rootScope.User) в NavCtrl после входа пользователя (так после запуска функции onLogin).

Но, я делаю что-то неправильно, и я не могу понять, как это исправить. Я думаю, что это может быть чтение кода, прежде чем он получит значение. Но я не уверен. Если бы кто-нибудь мог мне помочь, это было бы потрясающе!

Спасибо!

.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(); 
}); 

ответ

1

не может быть ответа вы искать, но избегать использования $rootScope для хранения глобал

Используйте услугу и введите его

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

, а затем в контроллере:

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

Это опечатка. Удалите c из cUser одна линии над console.log($rootScope.User);

ИЛИ сделать этот

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

Я действительно исправил эту опечатку после того, как я разместил вопрос, и он все еще не работает ... –

0

Когда вы сделаете это $state.go('tabs.feed') есть шанс, что tabs.feed звонит NavCtrl? Если да, то да, вы читаете его перед установкой значения.

Смежные вопросы