相关疑难解决方法(0)

可以用$ provide.decorator装饰Angular $注入器吗?

也许这是一个可怕的想法,但如果是,那么请告诉我为什么然后假装这是一个学术练习,不会在生产中看到光明.

我想为Angular $ injector服务添加一些逻辑,以监视何时将某些服务注入其他服务.由于Angular似乎提供了一种装饰服务的机制,我认为这将是一种方法.但是,以下代码引发错误.

(function () {
    'use strict';

    var app = angular.module('app');

    app.config(['$provide', function ($provide) {
        $provide.decorator('$injector', ['$log', '$delegate', addLoggingToInjector]);
    }]);

    function addLoggingToInjector($log, $delegate) {
        var baseInstantiate = $delegate.instantiate;
        var baseInvoke = $delegate.invoke;

        $delegate.instantiate = function (type, locals) {
            // $log.debug('Calling $injector.instantiate');

            baseInstantiate(type, locals);
        };

        $delegate.invoke = function (fn, self, locals) {
            // $log.debug('Calling $injector.invoke');

            baseInvoke(fn, self, locals);
        };

        return $delegate;
    };
})();
Run Code Online (Sandbox Code Playgroud)

具体错误是:

未捕获错误:[$ injector:modulerr]由于以下原因无法实例化模块应用程序:错误:[$ injector:unpr]未知提供程序:$ injectorProvider

angularjs

20
推荐指数
2
解决办法
7143
查看次数

标签 统计

angularjs ×1