用于监听范围的通配符在AngularJs上播放$ on

时间:2013-08-17 00:34:33

标签: angularjs

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

示例:

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

2 个答案:

答案 0 :(得分:19)

在角度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中的关联数组不会将正则表达式作为键,这表明简短的回答是“不,你不能”。

答案 1 :(得分:0)

不是开箱即用,但是..你可以创建一个帮助函数customOn()并使用它而不是$ on。 customOn()可以在事件名称上执行正则表达式并调度任何事件。