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

AngularJS:来自指令的广播事件

公冶京
2023-03-14
问题内容

我已经看到人们从他们的代码中的任何地方执行此操作:

$rootScope.$broadcast('someEvent', someParameter);

然后在某些控制器中:

$rootScope.$on('someEvent', function(event, e){ /* implementation here */ });

现在,我想广播指令中的事件。在rootScope级别广播它是一种好习惯吗?我想在控制器中处理此事件。我可以使用$ scope还是仍然必须在$
rootScope上收听?


问题答案:

就我而言,我只想将指令中的事件广播到使用该指令的视图控制器。那么使用广播仍然有意义吗?

我会让指令在控制器上调用方法,该方法在使用指令的HTML中指定:

对于使用隔离范围的指令:

<div my-dir ctrl-fn="someCtrlFn(arg1)"></div>

app.directive('myDir', function() {
  return {
    scope: { ctrlFn: '&' },
    link: function(scope, element, attrs) {
       ...
       scope.ctrlFn({arg1: someValue});
    }

对于不使用隔离范围的指令:

<div my-dir ctrl-fn="someCtrlFn(arg1)"></div>

app.directive('myDir', function($parse) {
  return {
    scope: true,  // or no new scope -- i.e., remove this line
    link: function(scope, element, attrs) {
       var invoker = $parse(attrs.ctrlFn);
       ...
       invoker(scope, {arg1: someValue} );
    }


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

  • 问题内容: 我有以下几点: 据我了解,我需要取消注册监听事件。有人可以告诉我如何编码/执行此操作吗? 问题答案: 如果您不取消注册该事件,则将发生内存泄漏,因为传递给您的函数将不会被清除(因为对该函数的引用仍然存在)。更重要的是,在其范围内引用函数的任何变量也将泄漏。如果在应用程序中多次创建/销毁控制器,则将导致多次调用函数。幸运的是,AngularJS提供了两种有用的方法来避免内存泄漏和不良行为

  • 我有一个大小为(1000,30,16,16)的张量。我正在做如何使其正常化的实验。我正在尝试跨案例进行规范化,可能是频率轴等。 以下工作: 我得到: 操作数不能与形状一起广播(1000, 30, 16, 16) (30,) 它似乎在(30,16,16)这样的简单情况下成功地完成了丢失的轴 (16, 16) (16,) (1,) 但是当丢失的轴是右边而不是左边时失败,例如:(1000,30),它不能

  • 总线可以携带任何类型为RemoteApplicationEvent的事件,但默认传输是JSON,并且解串器需要知道哪些类型将提前使用。要注册一个新类型,它需要在org.springframework.cloud.bus.event的子包中。 要自定义事件名称,您可以在自定义类上使用@JsonTypeName,或者依赖默认策略来使用类的简单名称。请注意,生产者和消费者都需要访问类定义。 在自定义包中

  • 主要内容:AngularJS 指令,AngularJS 实例,数据绑定,AngularJS 实例,重复 HTML 元素,AngularJS 实例,AngularJS 实例,ng-app 指令,ng-init 指令,ng-model 指令,ng-repeat 指令,创建自定义的指令,AngularJS 实例,限制使用AngularJS 通过被称为 指令 的新属性来扩展 HTML。 AngularJS 通过内置的指令来为应用添加功能。 AngularJS 允许你自定义指令。 AngularJS 指令

  • 本章介绍 UDP 介绍 ChannelHandler, Decoder, 和 Encoder 引导基于 Netty 的应用 前面的章节都是在示例中使用 TCP 协议,这一章,我们将使用UDP。UDP是一种无连接协议,若需要很高的性能和对数据的完成性没有严格要求,那使用 UDP 是一个很好的方法。最著名的基于UDP协议的是用来域名解析的DNS。这一章将给你一个好的理解的无连接协议所以你能够做出明智的