2014-06-19 3 views
1

서비스 (서비스 내) 변경 내용을보고 싶은 배열을 노출 한 다음 서비스 메서드를 호출하는 서비스 개체가 있습니다.AngularJS 서비스의 배열 변경보기

$ scope에 배열에 대한 변경 사항을 컨트롤러를 통해 관찰하는 것은 쉬운 일이 아니지만 서비스에서 어떻게 수행 할 수 있습니까? 서비스는 여러 컨트롤러에서 공유되므로 많은 부분에서 로직을 구현하고 싶지 않습니다.

Polymer의 ArrayObserver를 사용해 보았지만 Angular와 작동하지 않습니다.

누구에게 의견이 있습니까? 감사

답변

0

당신은 즉의 $rootScope에 시계를 추가 할 수 있습니다 :

.service("mySvc", function($rootScope,...) { 
    var myArray = ... 
    ... 
    $rootScope.$watchCollection(
     function() { 
      return myArray; 
     }, 
     function(newval) { 
      ... 
     } 
    ); 

당신이 (있는 경우)가 더 이상 필요하지 않은 경우 시계의 등록을 취소 없음 조심해야하지만.

+0

희망은 도움이와 나는 rootScope 정지 처분에 대한 참조를 원하지 않는다. 수동으로 파괴하는 것은 선택 사항 일 수 있지만이 사용 사례에서 응원하는 것은 어렵습니다. – monobyte

0

안녕 당신은 배열

var arrayChangeListner = $rootScope.$watchCollection(function(){ 
}); 

등록 취소가 더 이상 @Nikos이

$ 시계 언급 한 바와 같이 필요한 해제 기능을 반환하는 경우 시계를 변경보고 $watchCollection을 사용할 수 있습니다, 그 함수와 같은 전화의 등록을 해제하려면 참고로이

arrayChangeListner(); 

:

  • http://www.bennadel.com/blog/2566-scope-watch-vs-watchcollection-in-angularjs.htm
  • Angular DOcs
    1. 이 일시적 모델입니다, 내가 rootScopet를 사용하지 않고 그것을 할 수있는 방법을 기대했다