如何取消注册或销毁$广播事件

how to unregister or destroy $broadcast-ed events?

本文关键字:广播 事件 注册 何取消 取消      更新时间:2023-09-26

我有一个指令,这是ng-repeat -ed 5次,当我从服务广播事件说fb-delete,然后事件触发5次(与ng-repeat -ed次数相同)我已经尝试过它与本地指令范围-> scope.$on('fb-delete', //do something),甚至与根范围$rootScope.$on('fb-delete', //so something)它总是触发多次。

我如何确保$broadcast只触发一次,即使指令很多?

使用Function构造函数:

function foo ()
  {
  /* do stuff once */
  /*...*/ 
  /*...*/ 
  /*...*/ 
  foo = Function;
  }
scope.$on('fb-delete', foo);

引用

  • rootScopeSpec.js:取消登记
  • AngularJS作用域生命周期