使用TextAngular plugin并尝试customize a toolbar,我尝试将自己的服务(LinkService
)注入模块,但出现[$injector:unpr] Unknown provider
错误
module.config(function($provide, LinkService){
$provide.decorator('taOptions', ['taRegisterTool', '$delegate', function(taRegisterTool, taOptions){
// $delegate is the taOptions we are decorating
// register the tool with textAngular
taRegisterTool('colourRed', {
iconclass: "fa fa-square red",
action: function(){
this.$editor().wrapSelection('forecolor', 'red');
LinkService.createLink(/*...*/)
}
});
// add the button to the default toolbar definition
taOptions.toolbar[1].push('colourRed');
return taOptions;
}]);
});
如何将我的服务注入此配置?
答案 0 :(得分:2)
我们无法将服务注入configuration
块。
配置块 - 在提供商注册期间执行 和配置阶段。只能注入提供者和常量 到配置块。这是为了防止意外实例化 服务完全配置之前的服务。
运行块 - 在创建并使用注入器后执行 启动应用程序。只有实例和常量才可以 注入运行块。这是为了防止进一步的系统 在应用程序运行时配置。
然而,我们可以将类似的逻辑制作成provider。我不确定LinkService
的使用情况,但作为提供者存根我可以看到如下内容......
module.provider('LinkProvider', function () {
var link;
return {
createLink: function (value) {
link = value;
},
$get: function () {
return {
link: 'http://' + link
}
}
}
});
module.config(function (LinkProvider) {
LinkProvider.createLink('stackoverflow.com');
});
请参阅博客Differences Between Providers In AngularJS,详细了解提供商