0

我試圖在登錄嘗試後使用從Firebase收到的承諾來捕獲並顯示身份驗證錯誤。從承諾中捕獲Firebase身份驗證錯誤

btnsignin.addEventListener('click', e =>{ 
    const emailaddress = email.value; 
    const passworddetail = password.value; 
    const auth = firebase.auth(); 
    const promise = auth.signInWithEmailAndPassword(emailaddress, passworddetail); 
    **promise.catch(function(e) { 
     $scope.signinchallenges = e.message; 
    }); 
});** 

在當btnsignin被觸發的那一刻,身份驗證錯誤不顯示時再次點擊,直到。有什麼幫助呢?

回答

0

此問題是由AngularJS不知道您已更新範圍這一事實引起的。所以,當你更新了這個值的時候,AngularJS不會重畫視圖。它提醒了更新,使用$timeout$apply

promise.catch(function(e) { 
    $timeout(function(e) { 
    $scope.signinchallenges = e.message; 
    }); 
}) 

或者,你也許可以簡單地分配承諾的範圍:

$scope.signinchallenges = auth.signInWithEmailAndPassword(emailaddress, passworddetail); 

,然後在視圖中讀取消息有:

{{signinchallenges.message}} 
+0

感謝它的工作。 – victoroniibukun

+0

如果我的回答很有用,請點擊左側的upvote按鈕。如果它回答了您的問題,請點擊複選標記以接受它。這樣別人就知道你已經(充分)幫助了。 –