我延迟加载依赖于用户的模块。然后我不想为模块加载的指令声明一个装饰器。但在尝试装饰指令时,我遇到了未知的提供者。
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] Unknown provider: demoDirectiveProvider
如果我更改代码以采用服务或工厂,它就会起作用。
以下两幅作品
if(service[1] === 'service')
if(service[1] === 'factory')
任何关于为什么这不能与指令一起使用的建议
最佳答案
原来 Angular 指令名称带有“Directive”后缀。
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;
})
}
});
});
关于javascript - $provide.decorator 为指令提供未知提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36334985/