天天看點

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);
});