angularjs $ применить в логине

0

Есть ли в этом смысл? Я столкнулся с ним в скрипте входа.

$scope.login = function(){
       //.... call to do login stuff then

       $timeout( function(){
                    $scope.$apply(function () {
                        $rootScope.displayName = val.displayName;
                        $rootScope.userID = authData.uid;


                    });
                }, 100);

}

Я видел это в своем коде. Я думал, что приложение уже работает, когда была нажата кнопка. Нужно ли снова запускать его?

  • 0
    Ни в коем случае вам не нужно его запускать. Так как ng-click запускает цикл дайджеста для вас ..
  • 0
    ng-click запускает цикл дайджеста, но имейте в виду, что он находится в $timeout , поэтому он выходит за рамки стека событий. Тем не менее, $timeout ТАКЖЕ выполняет цикл дайджеста (именно поэтому мы используем $timeout вместо timeout ), так что да, делать это не нужно.
Показать ещё 6 комментариев
Теги:
apply

1 ответ

0

$timeout запускает $scope.$apply только он заканчивается, нет, это не имеет никакого смысла. Я предполагаю, что есть какой-то асинхронный вызов, сделанный где-то еще в вашем приложении, и этот фрагмент кода пытается дождаться завершения этого вызова, но это не так, как это должно быть сделано.

Обещания или события - это то, что следует использовать там: https://docs.angularjs.org/api/ng/service/$q

Ещё вопросы

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