AngularJS - 服务范围内的$

时间:2016-03-11 09:17:30

标签: javascript angularjs angularjs-scope event-listener

所以我有一个服务,我想允许听取其他地方发生的事件。

我发现这个问题提供了部分解决方案: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

0 个答案:

没有答案