私は角度アプリを開発していて、Firebaseを使用してそれに登録とログ機能を実装しています。両方の機能がうまく機能しています。ユーザがログインしていなくても、ログインページのレンダリング値
私が抱えている問題は、onAuthStateChanged()関数です。私が欲しいのは、ユーザーがログインすると、ログインしているというメッセージを見ることができなければならないということです。私も "Hi {{currentUser.firstname}}"を見ることができます。ログインするとコードを作成しますが、ページを更新してもう一度ログインしようとすると、ログインボタンをクリックしなくても "{{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参照を失うことができますが、ユーザーオブジェクトはまだ機能しています。ログアウトしてもログインページに「{{currentUser.firstname}}」と表示されています。私はこれについて正しいですか? @cartant –
ログアウトした後、 'onAuthStateChanged'から渡された' user'は 'null'でなければなりません。最も可能性の高い説明は、Angularの変更検出が 'currentUser'への変更を見ていないことです。私はあなたが '$ apply'と呼ぶ必要があると思います - 何でも(それは私がAngular 1で開発してからしばらくありました)。 – cartant