2014-06-06 3 views
1

WebSockets를 통해 호출하려면 AngularJS와 전화 웹 서비스를 사용하고 있습니다.
웹 서비스는

내가보기가 자동으로 난 직후 $scope.$apply를 사용하는 경우를 제외하고 업데이트되지 않은 $scope 변수를 설정하려면이 기능을 사용 Phone.onIncomingCall 같은 여러 콜백을 가지고있다.

Phone.onIncomingCall = function(){ 
    $scope.myVar = "newValue"; 
    $scope.$apply(); // only works if I call this line 
}; 

이 문제에 대한 이유 무엇입니까 (이 예상되는)와 각 기능에 $scope.apply()를 사용하여 주위에 방법은 무엇입니까?

+0

가능한 복제본 [AngularJS에서보기가 업데이트되지 않음] (http://stackoverflow.com/questions/10179488/the-view-is-not-updated-in-angularjs) –

답변

3

, 당신이 만든 범위 변수에 업데이트 "인식"입니다 :

나는 다음과 같은 권장합니다. $apply에 대한 문서에서 :

$ 적용은() 각 프레임 워크의 외부에서 각도에서 식을 실행하는 데 사용됩니다. (예 : 브라우저 DOM 이벤트, setTimeout, XHR 또는 타사 라이브러리). 우리가 을 호출하기 때문에 우리는 적절한 범위 수명주기 인 예외 처리, 시계 실행을 수행해야합니다. 범위에 $apply을 실행하여

$digest$scope.myVar에 등록 된 $watch ERS를 트리거 $rootScope로부터 호출된다. 이 경우 보간을 통해 뷰에서 변수를 사용하는 경우 여기가 $watch이 등록 된 곳입니다.

1

예상되는 동작이며, 내부적으로 각도가 작동합니다. 당신이 각도 컨텍스트 외부에서이를 업데이트하고 있기 때문에 각도

Phone.onIncomingCall = function() { 
    $scope.$apply(function() { 
     $scope.myVar = 'newValue'; 
    }); 
} 
관련 문제