Задержка ошибки аутентификации AngularFire (Angular + Firebase)

0

Я узнал что-то странное. Пожалуйста помоги!

$scope.login = function() {
    ref.authWithPassword({
        email: $scope.user.email,
        password: $scope.user.password
    }, function(error, authData) {
        if (error) {
            console.log("Login Failed!", error);
            $scope.message = error.toString();
        } else {
            $location.path('/meetings');
            console.log("Authenticated successfully with payload:", authData);
        }
    });
} //login

Это функция входа в систему, и она работает хорошо. Однако дело в том, что я получаю error 3, 4 секунды после отправки логина. Я заметил, что мое {{message}} не обновляется сразу после получения значения в $scope.message. Я думал, что Angular должен показать эту ценность, как только она изменится. ?

После того, как я нажимаю второй раз, я получаю сообщение об ошибке.

Здесь я печатаю значение:

<p class="error formerror" ng-show="message">{{message}}</p>

Теги:
firebase
firebase-authentication
angularfire

1 ответ

1

Вы вызываете authWithPassword, который является частью обычного SDK Firebase. Этот API запустит процесс аутентификации и вызовет вашу функцию после завершения проверки подлинности. К сожалению, в этот момент AngularJS больше не знает о каких-либо обновлениях, которые вы вносите в $scope.

Чтобы уведомить AngularJS об обновлении, заверните свой код в $timeout:

$scope.login = function() {
    ref.authWithPassword({
        email: $scope.user.email,
        password: $scope.user.password
    }, function(error, authData) {
        $timeout(function() {
            if (error) {
                console.log("Login Failed!", error);
                $scope.message = error.toString();
            } else {
                $location.path('/meetings');
                console.log("Authenticated successfully with payload:", authData);
            }
        });
    });
} //login

Обратите внимание, что именно по этой причине AngularFire предоставляет удобные обертки вокруг этих функций аутентификации в своей службе $firebaseAuth. См. Раздел в руководстве AngularFire о регистрации пользователей.

Функция обертки, которую вы ищете, является $authWithPassword, читайте пример использования $authWithPassword в документации по API.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню