0
我正在研究一个角度应用,并使用Firebase实现注册和日志记录功能。两种功能都运行良好。登录页面渲染值,即使用户未登录
现在我遇到的麻烦是onAuthStateChanged()函数。我想要的是一旦用户登录,他/她必须能够看到一条消息,说他们已经登录。我甚至能够看到“Hi {{currentUser.firstname}}”,这是我在代码一旦我登录,但一旦我刷新页面并尝试再次登录,即使没有单击登录按钮,我也会看到“Hi {{currentUser.firstname}}”。我不知道怎么我的登录页面渲染,即使我没有登录$ rootScope.currentUser价值。我写了下面的代码,它
JS
auth.onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
var data = firebase.database().ref('users/' + user.uid);
data.on('value', function(snapshot) {
var userobj=snapshot.val();
$rootScope.currentUser=userobj;
})} else {
// No user is signed in.
$rootScope.currentUser=' ';
}
});
HTML
<div class="userinfo" ng-show="currentUser">
<span class="userinfo">Hi {{currentUser.firstname}}</span>
</div>
我实现了注销功能。由于注销,我能够失去Auth引用,但用户对象仍然有效。我认为正因为如此,我在登录页面上看到“Hi {{currentUser.firstname}}”,即使注销后也是如此。我对吗? @cartant –
注销后,从'onAuthStateChanged'传递的'user'应该为'null'。最可能的解释是,Angular的变化检测没有看到'currentUser'的变化。我想你需要调用'$ apply' - 或者其他(从Angular 1开发以来已经有一段时间了)。 – cartant