2014-01-21 6 views
7

내 응용 프로그램의 다른 여러 지시문이 텍스트 검색의 변경 사항을 수신 대기하도록 검색 지시문을 작성하고 있습니다.

나는 방송과 방출의 차이를 이해하려고 노력하고 있으며, 내 목적에 가장 잘 맞는 것은 무엇인가.

$ broadcast와 $ emit의 차이점은 $ broadcast가 범위 트리에만 들어가고 $ ​​emit이 범위 트리 위로 올라간다는 것입니다.

최대 요즘까지 나는 내 이벤트에 대해 $ rootScope. $ broadcast를 사용 해왔다.이 이벤트는 대부분 전역에 적용되었다. 이것이 올바른 방법일까요? rootScope. $ 브로드 캐스트 이벤트가 너무 많으면 걱정해야합니까? 아니면 그게 아닌 문제입니다.

답변

3

일반적으로 자리에 $rootScope을 삽입하면 안됩니다. 그것은 종종 목발 될 수 있으며 "전역 변수"

나는 $rootScope.broadcast 전화를 추상화하는 서비스를 구축하거나 대신 데이터 바인딩을 사용하는 것 중 하나가 많이 필요하게 될 겁니다 :

<my-directive text-search="foo"></my-directive> 

.directive('myDirective', [function() { 
    return { 
    link: function($element, $scope, $attrs) { 
     $scope.$watch($attrs.textSearch, function(newValue, oldValue) { 

     // Do stuff here... 

     }); 
    }  
    }; 
}]); 
+0

위의 지침과 관련하여 재미있는 아이디어 @ 위의 지시문과 관련하여 내 검색 상자에 다른 지시문을 연결할 수있는 텍스트 검색 속성이 있다고 제안 하시겠습니까? 당신은'text-search = 'foo' '라고 쓰지만, 검색을 듣는 것에 가치를 전달하고 싶습니다. 그래서 당신이 제공 한 예제가 어떻게 성취하는지 확신 할 수 없습니다. – pedalpete

+0

@pedalpete ng-model을 사용하여 범위에 검색 텍스트를 게시하는 검색 상자를 사용할 수 있습니다 (필자의 예에서는 "foo"입니다). 다른 지시어는 변경 사항을 감시합니다. – mmattax

관련 문제