2012-06-29 2 views
0

다른 코드가 $scope.$on이라면 내 서비스에이를 알리고 동일한 이름의 채널을 사용하여 websocket에 가입 할 수 있습니다. $rootScope에 내가들을 수있는 이벤트가 있습니까? 아니면 내가 볼 수있는 표현식이 있습니까? 새 청취자가 등록되어 있는지 어떻게 알 수 있습니까?

나는 노력이 : 나는 $watching Object.keys($scope.$$listeners).length을 해요,하지만 초기로드 제외하고 전화를받을하지 않는 것 http://jsfiddle.net/polidore/AZ7Av/

.

감사합니다.

답변

1

$on을 호출하는 대신 가장 좋은 방법은 서비스를 알리는 동안 $on을 호출하는 자체 기능을 만드는 것입니다.

당신은 당신이 정말로 $on 기능을 통해 감지해야하는 경우, 다음과 같은 기능을 재정의 할 수

var old$on = $scope.$on; 
$scope.$on = function(name, listener) { 
    // Code to notify your service here 

    old$on.apply(this, arguments); 
} 
+0

감사합니다. 나는 이것을 도서관에서하려고 노력하고있다. 나는 사용자가 내 서비스를 통해 이벤트를 등록하도록 만들 수 있다고 생각하지만, 일반적인 API를 사용하고 등록이 자동으로 내 서비스에 연결되도록하는 것은 훌륭한 문법적 설탕이 될 것입니다. – BHP

+0

고마워, 크랭크린. 이 jsfiddle에서 override 메서드를 사용했습니다. – BHP

+0

다음 프로젝트에서이 방법을 사용했습니다. https://github.com/polidore/ss-angular 추가 정보 – BHP

관련 문제