【问题标题】:$provide.decorator giving unknown provider for directives$provide.decorator 为指令提供未知的提供者
【发布时间】:2016-07-20 00:00:31
【问题描述】:

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

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 指令是指令名称,正在设置中。

错误

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

如果我更改代码以获取服务或工厂,它会起作用。

以下两个作品

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

关于为什么这不适用于指令的任何建议

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    原来角度指令名称以“指令”为后缀。

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

    【讨论】:

    • 哈!我认为“指令”后缀只是人们用于示例的约定。不,这是必需的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-09-27
    • 2016-11-29
    • 2018-09-28
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多