Angularjs angular.js$scope.$broadcast,$scope.$emit,$rootScope.$broadcast使用什么?
我正在构建一个搜索指令,我希望我的应用程序的多个其他指令能够侦听文本搜索的更改 我试图理解广播和发射之间的区别,以及什么最适合我的目的 据我所知,$broadcast和$emit之间的区别在于,$broadcast只沿着作用域树向下,而$emit沿着作用域树向上 到目前为止,我一直在为我的活动使用$rootScope.$broadcast,这在很大程度上是全局范围的。 这是正确的做事方式吗?Angularjs angular.js$scope.$broadcast,$scope.$emit,$rootScope.$broadcast使用什么?,angularjs,angularjs-scope,broadcast,Angularjs,Angularjs Scope,Broadcast,我正在构建一个搜索指令,我希望我的应用程序的多个其他指令能够侦听文本搜索的更改 我试图理解广播和发射之间的区别,以及什么最适合我的目的 据我所知,$broadcast和$emit之间的区别在于,$broadcast只沿着作用域树向下,而$emit沿着作用域树向上 到目前为止,我一直在为我的活动使用$rootScope.$broadcast,这在很大程度上是全局范围的。 这是正确的做事方式吗? 如果我有太多的rootScope。$广播事件,我应该担心吗?或者这不是问题 一般来说,您不应该到处注入$
如果我有太多的rootScope。$广播事件,我应该担心吗?或者这不是问题 一般来说,您不应该到处注入
$rootScope
。它常常会成为一根拐杖,最终你会有很多“全局变量”
我要么构建一个抽象了$rootScope.broadcast
调用的服务,要么干脆改用数据绑定:
<my-directive text-search="foo"></my-directive>
有趣的想法@mmattax,关于上面的you指令,您是否建议我在搜索框中设置一个文本搜索属性,然后链接到其他指令?您将其设置为
text search='foo'
,但我想向任何侦听搜索的对象传递一个值,因此我不确定您提供的示例是如何实现这一点的。@pedalpete您将有一个搜索框,它使用ng模型在范围上发布搜索文本(在我的示例中,“foo”就是这样的)。其他指令只是观察变化。
.directive('myDirective', [function() {
return {
link: function($element, $scope, $attrs) {
$scope.$watch($attrs.textSearch, function(newValue, oldValue) {
// Do stuff here...
});
}
};
}]);