8

有没有办法在 AngularJS 上使用通配符捕获范围广播?

例子:

$rootScope.$on('*created', function () { // do stuff });

4

2 回答 2

19

在angular js源码中,$on定义如下:

$on: function(name, listener) {
   var namedListeners = this.$$listeners[name];
   if (!namedListeners) {
      this.$$listeners[name] = namedListeners = [];
   }
   namedListeners.push(listener);

   return function() {
     namedListeners[indexOf(namedListeners, listener)] = null;
   };
},

因为this.$$listeners是一个关联数组,并且 javascript 中的关联数组不将正则表达式作为键,这表明简短的回答是“不,你不能”。

于 2013-08-17T00:51:30.473 回答
0

不是开箱即用,但是.. 您可以创建一个辅助函数 customOn() 并使用它来代替 $on。customOn() 可以对事件名称执行正则表达式并调度任何事件。

于 2016-02-19T21:03:33.427 回答