在Angular JS中从decorator内部调用工厂服务
Calling factory service from inside decorator in Angular JS
使用TextAngular插件并尝试自定义工具栏,我试图将自己的服务(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;
}]);
});
如何将我的服务注入此配置?
我们不能将服务注入configuration
块。
配置块-在提供程序注册期间执行以及配置阶段。只能注入提供程序和常量转换为配置块。这是为了防止意外实例化在服务完全配置之前。
运行块-在创建并使用注入器后执行以启动应用程序。只有实例和常量可以注入到运行块中。这是为了防止进一步的系统应用程序运行时的配置。
然而,我们可以在提供者中构建类似的逻辑。我不确定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');
});
请参阅博客AngularJS中提供商之间的差异,以全面了解提供商
相关文章:
- 如何使用异步调用更改工厂的变量
- 如何将控制器http调用转换为接受参数的服务/工厂模式
- Jasmine测试工厂函数调用本地函数和另一个函数-获取错误:应该是间谍,但得到了function
- 谷歌日历 api 调用可以在角度工厂内返回承诺吗?
- 我是否需要将工厂调用放在控制器的函数中
- 如何从变量中动态调用工厂方法
- 如何从 AngularJS 中的服务调用工厂
- 使用AngularFire创建用户并调用工厂以显示通知
- 调用工厂方法时出现 Angularjs 错误
- 调用工厂函数会触发错误
- 正在尝试调用工厂方法
- AngularJS -当URL改变时不调用工厂
- 在Angular.js中从指令控制器调用工厂
- AngularJS:在循环中调用工厂方法
- 为什么在angular中调用工厂在加载时发生了3次
- 调用工厂函数一次
- AngularJS:从控制器调用工厂
- 在Angular JS中从decorator内部调用工厂服务
- Angular js:如何同步调用工厂/服务方法
- 如何在 ng-submit 调用工厂函数后更新视图