所以我有一个服务,我想允许听取其他地方发生的事件。
我发现这个问题提供了部分解决方案:How do i use $on in a service in angular?
然而,我所获得的是一个Listen
服务,它处理所有代码的监听器。
现在,我想听一下Listen
服务user
服务上的其中一位听众。
到目前为止我得到的是:
angular.module('app')
.factory('Listen', function ($rootScope) {
var service = {
...
a bunch of event listeners
...
// Event listener
unique: function(scope, name, callback) {
var handler = $rootScope.$on('unique-' + name, callback);
scope.$on('$destroy', handler);
},
activateUnique: function(name){
$rootScope.$emit('unique-' + name);
}
};
return service;
});
angular.module('app')
.factory('userService', function (Listen) {
console.warn('LOADING: user.service.js');
var session,
id,
callDone = false,
service = {
...
some service functions
...
};
service.startSession();
Listen.unique($scope, id, function() {
callDone = true;
});
return service;
});
正如您可能已经注意到Listen.unique
函数需要$scope
,从controller
收听时没问题,但是从服务中收听时却没有问题,是否有办法解决此问题没有在$rootScope.$on('unique-' + name, callback);
中制作新的userService
?