$ provide.decorator为指令提供未知提供程序

时间:2016-03-31 13:32:35

标签: javascript angularjs

我懒得加载依赖于用户的模块。然后我不想为装载模块的指令声明装饰器。但是在尝试装饰指令时我会得到未知的提供者。

angular.module(moduleName).config(function ($provide) {
    var invokeQueue = angular.module(moduleName)._invokeQueue;
    invokeQueue.forEach(function (service) {
        if(service[1] === 'directive'){
            var directive = service[2][0];
            $provide.decorator(directive, function ($delegate) {
                return $delegate;
            })
        }
    });
});

var directive是指令名称,正在设置中。

错误

  

[$ injector:unpr]未知提供者:demoDirectiveProvider

如果我更改代码以获取服务或工厂,那么它可以工作。

以下两项工作

if(service[1] === 'service')
if(service[1] === 'factory')

任何有关为何使用指令

的建议

1 个答案:

答案 0 :(得分:3)

结果是角度指令名称后缀为“指令”。

angular.module(moduleName).config(function ($provide) {
    var invokeQueue = angular.module(moduleName)._invokeQueue;
    invokeQueue.forEach(function (service) {
        if(service[1] === 'directive'){
            var directive = service[2][0];
            console.log(directive);
            $provide.decorator(directive+'Directive', function ($delegate) {
                return $delegate;
            })
        }
    });
});