有没有办法在 AngularJS 上使用通配符捕获范围广播?
例子:
$rootScope.$on('*created', function () {
// do stuff
});
有没有办法在 AngularJS 上使用通配符捕获范围广播?
例子:
$rootScope.$on('*created', function () {
// do stuff
});
在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 中的关联数组不将正则表达式作为键,这表明简短的回答是“不,你不能”。
不是开箱即用,但是.. 您可以创建一个辅助函数 customOn() 并使用它来代替 $on。customOn() 可以对事件名称执行正则表达式并调度任何事件。