如何在 angularjs 的 for 循环中动态创建 $rootScope.$on 事件侦听器
How to dynamically create $rootScope.$on event listeners in a for loop in angularjs
我想在 angularjs 服务中动态创建事件监听器,但是似乎我在服务的 for
循环中创建的每个 $rootScope.$on
事件监听器都被以下事件侦听器。我如何动态创建 $rootScope.$on
even 监听器而不覆盖以前的事件监听器?我使用来自控制器的广播创建事件,例如 $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
)。如何在不覆盖先前 $rootScope.$on
事件侦听器的 for 循环中动态创建事件侦听器?
我想在 angularjs 服务中动态创建事件监听器,但是似乎我在服务的 for
循环中创建的每个 $rootScope.$on
事件监听器都被以下事件侦听器。我如何动态创建 $rootScope.$on
even 监听器而不覆盖以前的事件监听器?我使用来自控制器的广播创建事件,例如 $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
)。如何在不覆盖先前 $rootScope.$on
事件侦听器的 for 循环中动态创建事件侦听器?