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