gpt4 book ai didi

angularjs - angular.js $scope.$broadcast, $scope.$emit, $rootScope.$broadcast 用什么?

转载 作者:行者123 更新时间:2023-12-04 12:41:21 27 4
gpt4 key购买 nike

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

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

据我了解,$broadcast 和 $emit 之间的区别在于 $broadcast 仅沿着作用域树向下,而 $emit 沿着作用域树向上。

到目前为止,我一直在为我的事件使用 $rootScope.$broadcast,这在很大程度上是全局范围内的。
这是正确的做事方式吗?
如果我有太多 rootScope.$broadcast 事件,我应该担心吗?或者那不是问题。

最佳答案

一般来说,你不应该注入(inject) $rootScope到处都是。它通常会成为一个拐杖,你最终会拥有很多“全局变量”

我要么构建一个抽象 $rootScope.broadcast 的服务。调用,或者干脆使用数据绑定(bind)代替:

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

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

// Do stuff here...

});
}
};
}]);

关于angularjs - angular.js $scope.$broadcast, $scope.$emit, $rootScope.$broadcast 用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21246684/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com