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

时间:2014-01-21 00:07:46

标签: angularjs angularjs-scope broadcast

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

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

据我了解,$ broadcast和$ emit之间的区别在于$ broadcast仅在范围树中向下,而$ emit在范围树中上升。

到目前为止,我一直在为我的活动使用$ rootScope。$ broadcast,这在大多数情况下都是全球性的。 这是正确的做事方式吗? 如果我有太多rootScope,我应该担心。$ broadcast events?或者这不是问题。

1 个答案:

答案 0 :(得分: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...

      });
    }    
  };
}]);