$ rootScope数据仅在未应用参数时正确显示

时间:2015-08-19 18:14:17

标签: angularjs firebase

我正在尝试使用firebase api从本地存储中获取用户数据。在run方法中,我有一个简单的代码来调用它

$rootScope.$on('$stateChangeStart', function () {
          // Use the User service to get the currently 
          // logged in user from the local storage
          var loggedInUser = User.getLoggedInUser();
          //
          if (loggedInUser) {
              $rootScope.loggedInUserData = User.getUserData(loggedInUser.uid);
          }
      })

哪个称之为。该服务只需用户和我的getItem进行JSON解析

var user = localStorage.getItem('firebase:session::<foo>');
if (user) {
    return JSON.parse(user);
}
如果我写一个简单的console.log($rootScope.loggedInUserData),在我的控制器中

它按预期返回数据。

expected return

但是,如果我添加console.log($rootScope.loggedInUserData.email),我会收到undefined

更奇怪的是,如果我同时包含console.log($rootScope.loggedInUserData.email)console.log($rootScope.loggedInUserData),则$rootScope.loggedInUserData结构会更改为下面的图像

enter image description here

我在代码中对两张图片进行的唯一更改是添加了console.log($rootScope.loggedInUserData.email)

任何人都对此有任何见解?我希望能够将其重用为firebaseObject,以便更新对用户的更改。

更新

我能够使用angularfire $ loaded()方法获取电子邮件

  $rootScope.loggedInUserData.$loaded()
     .then(function (data) {
        console.log(data.email); // returns
   })

我猜这与我的慢速连接有关。

0 个答案:

没有答案