$rootScope变量未定义

$rootScope variable coming up undefined?

本文关键字:未定义 变量 rootScope      更新时间:2023-09-26

所以,我试图在用户登录后(在onLogin函数运行之后(在NavCtrl中获取一个对象($rootScope.User(。

但是,我做错了什么,我不知道如何解决它。我认为它可能在获得值之前正在读取代码。但是,我不太确定。如果有人能帮助我,那就太棒了!

谢谢!

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

不是您要查找的答案,但请避免使用$rootScope来存储全局变量

使用服务并注入它

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

然后在控制器中:

.controller('NavCtrl', function($scope, UserService, Backand, dataService) {
    $scope.user = UserService.user;
}
这是一个

错字。从cUser console.log($rootScope.User); 上方一行中删除c

或者这样做

console.log($rootScope.cUser);

当你这样做$state.go('tabs.feed') tabs.feed是否有可能调用 NavCtrl?如果是这样,那么是的,您在设置值之前正在阅读它。