angular.js $ scope。$ broadcast,$ scope。$ emit,$ rootScope。$ broadcast使用什么?

我正在构建一个搜索指令,我希望我的应用程序的多个其他指令能够侦听对文本搜索的更改。

我试图理解广播和发射之间的区别,以及最适合我的目的的是什么。

据我了解,$ broadcast和$ emit之间的区别在于$ broadcast只是在范围树下,而$ emit则在范围树上。

到目前为止,我一直在使用$ rootScope。$ broadcast来处理我的事件,这些事件大部分都是全局的。 这是做事的正确方式吗? 如果我有太多的rootScope。$广播事件,我应该担心吗? 或者这是一个非问题。


通常,您不应该在整个地方注入$rootScope 。 它通常会成为一个拐杖,你最终会有很多“全局变量”

我要么建立一个抽象$rootScope.broadcast调用的服务,要么简单地使用databinding:

<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...

      });
    }    
  };
}]);
链接地址: http://www.djcxy.com/p/18729.html

上一篇: angular.js $scope.$broadcast, $scope.$emit, $rootScope.$broadcast what to use?

下一篇: Showing a page content at once