2014-07-22 1 views
0

에 볼 수 있습니다. 메소드 getSomething()과 getSomethingElse()를 실행하는 데 몇 초가 걸릴 수 있으므로 각 메소드가 데이터를 리턴하자마자 뷰를 갱신하고 싶습니다. 나는 코멘트가있는 곳에서 $scope.$apply();을 덧붙여 이것을 할 수 있어야한다는 것을 알았지 만, 각이 오류를 내고있다 : Error: [$rootScope:inprog]. 누군가가 이유를 설명하거나 더 나은 대안을 제공 할 수 있습니까?업데이트 AngularJS와 내가 같은 각도 컨트롤러가 요구

<div ng-show="something.length"> 
    {{something}} 
</div> 

또한, 당신은 로딩 메시지를 추가 할 수 있습니다 일이 다시 오실 때까지 :

<div ng-show="loading">Loading something...</div> 

답변

1

을 당신은 트리거하려고하는 일이 이런 식으로 돌아올 때까지 감사

0

는보기 숨기기 다이제스트주기 ($apply() 경유) 중 하나가 이미 발생하는 동안.

$timeout()을 사용하면 필요한 경우 다이제스트를 트리거하거나 이미 진행 중이면 정상적으로 계속 진행됩니다.

$timeout(function() { 
    // anything you want can go here and will safely be run on the next digest. 
}) 

$scope.$$phase이 false 인 경우 또한 확인할 수 있습니다 $apply()을 사용하기 전에 (각 의미는 다이제스트의 중간에없는), 그러나 그 충고를 듣지 않는 것입니다.

if(!$scope.$$phase) { 
    //$digest or $apply 
}