【发布时间】:2014-11-19 08:08:48
【问题描述】:
我的目的是在用户登录后更新导航栏。基本上,它应该在登录后立即将Login 更改为Hi, {{usr.username}}。
但是,登录后它不会更新,我必须再次单击Login 才能触发更改。但是,在控制台中,用户信息会在登录后立即记录。
在index.html中,部分代码如下:
<div class="item" ng-click="loginmodal()" ng-hide="loggedIn">Log in</div>
<div class="item" ng-show="loggedIn">Hi, {{usr.username}}</div>
$scope.loggedIn 被初始化为 false,$scope.usr 被初始化为 null。我正在使用 firebase 进行身份验证:
FirebaseRef.authWithPassword({
"email" : email,
"password" : password
}, function(error, authData) {
if (error) {
console.log('Login Failed!', error);
} else {
console.log('Authenticated successfully with payload:', authData);
FirebaseRef.child("users").child(authData.uid).once('value', function(dataSnapshot) {
$scope.usr = dataSnapshot.val();
});
$scope.loggedIn = true;
console.log($scope.usr);
console.log($scope.loggedIn);
}
});
在控制台中,我将 $scope.loggedIn 设为 true,但将 $scope.usr设为 null。
我使用authWithPassword() 函数的方式有问题还是我可以强制更新更改?
【问题讨论】:
-
我认为 $scope.user 在另一个范围内,请尝试使用服务来更新此值。
-
正如@Miszy 所说,您应该使用AngularFire 的
$firebaseAuth服务,它会为您处理范围的更新。见firebase.com/docs/web/libraries/angular/…
标签: angularjs firebase angularfire