我正在尝试使用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)
,在我的控制器中它按预期返回数据。
但是,如果我添加console.log($rootScope.loggedInUserData.email)
,我会收到undefined
更奇怪的是,如果我同时包含console.log($rootScope.loggedInUserData.email)
和console.log($rootScope.loggedInUserData)
,则$rootScope.loggedInUserData
结构会更改为下面的图像
我在代码中对两张图片进行的唯一更改是添加了console.log($rootScope.loggedInUserData.email)
。
任何人都对此有任何见解?我希望能够将其重用为firebaseObject,以便更新对用户的更改。
更新
我能够使用angularfire $ loaded()方法获取电子邮件
$rootScope.loggedInUserData.$loaded()
.then(function (data) {
console.log(data.email); // returns
})
我猜这与我的慢速连接有关。