source

AngularJS 왜 스코프가 필요하죠?$140 이내.$on?

ittop 2023. 2. 26. 10:31
반응형

AngularJS 왜 스코프가 필요하죠?$140 이내.$on?

예상대로 동작하지 않는 코드가 있습니다.Angular에 이벤트 청취자가 있습니다.JS 컨트롤러는 다음과 같습니다.

$scope.$on("newClipSelected", function(e) {
    $scope.$apply(function() {
        $scope.isReady = true;
    });
});

컨트롤러 마크업에 ng-show='isReady'가 있습니다.이 이벤트 핸들러가 실행되면 예상대로 ng-show 영역이 표시됩니다.단, 이 이벤트핸들러는 동작하지 않습니다.

$scope.$on("newClipSelected", function(e) {
    $scope.isReady = true;
});

이 이벤트 핸들러를 사용하여 디버거를 사용하여 각도가JS 스코프 $scope.isReady=true는 표시되지만 ng-show 요소는 표시되지 않습니다.

제가 알기로는 그 $스코프입니다.$on은 실제로 $watch/$watch를 호출합니다.이 경우 $apply에 전화해야 하는 이유는 무엇입니까?

이벤트는 $rootScope 호출에 의해 트리거되고 있습니다.비메모리 내의 $syslog()JS 비동기 완료 이벤트입니다.

아니, 앵글은 발사되지 않아$apply행사 중이기 때문에$broadcastangular의 문맥 밖이라고 불리는데, 당신은 그것을 할 필요가 있을 것이다.$apply손으로.

출처를 이쪽에서 확인하다

$on그리고.$broadcast전화하지 않다$apply직접 불러야 해요이유는 모르겠지만, 다이제스트가 조금 비싸고, 모든 이벤트에 대해 다이제스트 사이클을 실행하는 데 비용이 들기 때문이라고 생각합니다.

언급URL : https://stackoverflow.com/questions/22414017/angularjs-why-am-i-needing-scope-apply-within-scope-on

반응형