当前位置: 首页 > 面试题库 >

AngularJS中$ broadcast(),$ emit()和$ on()的用法

万俟玉书
2023-03-14
问题内容

我了解$Broadcast()$Emit()并且$On()
用于在一个控制器中引发事件并在另一个控制器中进行处理。如果可能的话,有人可以直接给我一些有关上述三种用法的实时示例angular JS吗?

我通过以下链接了解了基本用法。

http://www.binaryintellect.net/articles/5d8be0b6-e294-457e-82b0-ba7cc10cae0e.aspx


问题答案:

$ emit

它通过作用域层次结构向上调度事件名称,并通知已注册的$rootScope.Scope侦听器。事件生命周期从$emit被调用的范围开始。该事件向上移动到根作用域,并在此过程中调用所有已注册的侦听器。如果其中一个侦听器取消了该事件,则该事件将停止传播。

$广播

它将事件名称向下调度到所有子作用域(及其子作用域),并通知已注册的$rootScope.Scope侦听器。事件生命周期从$broadcast被调用的范围开始。该范围内事件的所有侦听器都会收到通知。之后,事件向下遍历子作用域,并沿途调用所有注册的侦听器。该事件无法取消。

$ on

它侦听给定类型的事件。它可以捕捉事件调度的$broadcast$emit

视觉演示:

演示工作代码,以可视方式显示范围树(父/子关系):http :
//plnkr.co/edit/am6IDw?p=preview

演示方法调用:

  $scope.$on('eventEmitedName', function(event, data) ...
  $scope.broadcastEvent
  $scope.emitEvent


 类似资料:
  • 本文向大家介绍Angularjs中的事件广播 —全面解析$broadcast,$emit,$on,包括了Angularjs中的事件广播 —全面解析$broadcast,$emit,$on的使用技巧和注意事项,需要的朋友参考一下 Angularjs中不同作用域之间可以通过组合使用$broadcast,$emit,$on的事件广播机制来进行通信 介绍: $broadcast的作用是将事件从父级作用域传

  • 问题内容: 现在,之间的性能差异和已被淘汰,没有任何理由,更喜欢到? 他们是不同的,是的。 仅限于范围层次结构(向上)-如果它适合您的设计,这可能很好,但是在我看来,这是一个相当随意的限制。 在所有 选择 收听此活动的人中都有效,这在我看来是一个更为明智的限制。 我想念什么吗? 编辑: 为了对回答做出澄清,调度的方向不是我要解决的问题。向上调度事件,-向下调度事件。但是,为什么不总是使用它来覆盖所

  • 如何使用和方法将对象从一个控制器发送到另一个控制器? 它的工作方式并不像我想的那样。和如何工作?

  • 问题内容: 使用它很容易发出事件或注意事件。 但是,如果我尝试使用语法,我警告说,和不是的方法。如何访问它们?我还需要注入控制器定义吗? 您可以做这样的事情,但是它不会破坏根本不用的目的吗? 如何使用控制器作为语法访问观察者? 问题答案: 为了使用存在的任何东西,您不得不注入。不幸的是,它很简单,这是“ as”语法的缺点。 不过,好消息是,与之一起注入不会改变控制器作为语法的功能,它只是使您能够访

  • 问题内容: 如何使用和方法将对象从一个控制器发送到另一个控制器? 它不按我认为的方式工作。如何做和工作? 问题答案: 首先,父子范围关系确实很重要。你有两种可能性发出某些事件: -将事件向下分发到所有子范围, -通过范围层次结构向上调度事件。 我对你的控制器(作用域)关系一无所知,但是有几种选择: 如果scope of 是作用域的父级,则你的代码应通过替换为来工作: 如果你的范围之间没有父子关系,

  • 问题内容: 我一直在阅读Angularjs中的事件传递,但我不相信使用$ broadcast是个好主意。 像这样的博客一个倡导者已经习惯了美元,即使它“感觉就像矫枉过正。” 我的困惑是,该实现使用范围的深度优先遍历并寻找订阅者,这使事件的速度取决于树的结构。这是角度代码: 此外,似乎您可以使用这些方法来破解依赖项注入。 另一种方法是简单地缓存事件类型和回调并直接调用它们的服务。这要求您清理订阅以避