2015-08-20 2 views
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

нет way..you не нужно запускать it.As 'нг-click' мчит переваривать цикл для вас .. –

+0

' нг-клик 'Выполняет цикл дайджеста, но имейте в виду, что это время $ timeout, поэтому оно выходит за рамки стека событий. Тем не менее, '$ timeout' ТАКЖЕ выполняет цикл дайджеста (поэтому мы используем' $ timeout' вместо 'timeout'), так что да, это не обязательно делать. – HankScorpio

+0

Я также должен уточнить, что этот блок кода был завернут в обещание: auth.withpassword(). Then (funtion() {... $ timeout (function() {...})}). Будет ли это иметь значение, поскольку цикл дайджест мог бы закончиться к тому времени? –

ответ

0

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

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

Смежные вопросы