我正在构建一个搜索指令,我希望我的应用程序的多个其他指令能够侦听文本搜索的更改。
我试图理解广播和发射之间的区别,以及最适合我的目的。
据我了解,$ broadcast和$ emit之间的区别在于$ broadcast仅在范围树中向下,而$ emit在范围树中上升。
到目前为止,我一直在为我的活动使用$ rootScope。$ broadcast,这在大多数情况下都是全球性的。 这是正确的做事方式吗? 如果我有太多rootScope,我应该担心。$ broadcast events?或者这不是问题。
答案 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...
});
}
};
}]);