我想在angularjs服务中动态创建事件侦听器,但似乎我在服务的$rootScope.$on
循环中创建的每个for
事件侦听器都被以下事件侦听器覆盖。如何在不覆盖先前事件侦听器的情况下动态创建$rootScope.$on
偶数侦听器?我使用来自我的控制器的广播来创建事件,例如$rootScope.$broadcast(EVENTS.userDeleteSuccess.event);
。
我的EVENTS
常量如下:
myApp.constant('EVENTS', {
userDeleteSuccess: {
event: 'user-delete-success',
type: 'success',
message: 'User successfully deleted'
},
...,
siteDeleteSuccess: {
event: 'site-delete-success',
type: 'success',
message: 'Site successfully deleted'
}
}
我的服务如下:
myApp.service("Alert", function($rootScope, EVENTS) {
var show = function(type, message) {
$rootScope.alert = {
type: type,
message: message,
show: true
};
};
// Initialized on application startup, this is the problem method!
this.initialize = function() {
for(var event in EVENTS) {
if(!EVENTS.hasOwnProperty(event)) break;
var _event = EVENTS[event];
$rootScope.$on(_event.event, function() {
show(_event.type, _event.message);
});
}
};
return this;
});
广播的唯一事件始终是对象中的最后一个事件(在本例中为siteDeleteSuccess
)。如何在for循环中动态创建事件监听器,而不会覆盖先前的$rootScope.$on
事件监听器?