天天看点

angularjs decorator

angularjs decorator

$provide.decorator()

$provide.decorator()函数可以接受两个参数:

  1.  name(字符串)

    将要拦截的服务名称。

  2.  decoratorFn(函数)

    在服务实例化时调用该函数,这个函数由injector.invoke调用,可以将服务注入这个函数中。

$delegate

var githubDecorator = function($delegate, $log) {
    var events = function(path) {
        var startedAt = new Date();
        var events = $delegate.events(path);
        // 事件是一个promise 
        events.finally(function() {
            $log.info("Fetching events" +
                " took " +
                (new Date() - startedAt) + "ms");
        });
        return events;
    };
    return {
        events: events
    };
};

angular.module('myApp')

.config(function($provide) {
    $provide.decorator('githubService', githubDecorator);
});