javascript – 我们可以在Angular JS的装饰器中访问$provide吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 我们可以在Angular JS的装饰器中访问$provide吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1716字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 我们可以在Angular JS的装饰器中访问$provide吗?](/upload/InfoBanner/zyjiaocheng/773/dc25502c534a477e981255130432c64b.jpg)
最近我遇到了一个测验,问题是
Decorators use
Select one:
a. Both
b. $delegate
c. None
d. $provide
我选择b.$delegate并且测验说这是错误的,测验说正确的答案是a.两个.
所以我想知道这是否属实,我认为装饰器在提供者内部,即他们是由提供者调用的服务,他们可以使用$delegate,就像在这个例子中一样
app.config(function ($provide) {
$provide.decorator('movieTitle', function ($delegate) {
return $delegate + ' - starring Keanu Reeves';
});
});
此外,它在decorator documentation中说明了这一点
This function will be invoked when the service needs to be instantiated and should return the decorated service instance. The function is called using the injector.invoke method and is therefore fully injectable. Local injection arguments:
$delegate – The original service instance, which can be monkey patched, configured, decorated or delegated to.
所以,我错过了什么或测验错了,或者我错了,有人可以帮助我理解这一点.
解决方法:
是的,正确的答案是两者.作为示例,这是一段代码,其中使用自定义服务logEnchance为$log服务设置装饰器以添加自定义功能.在这种情况下,logEnchance会将帖子发布到外部日志服务.
angular.module('angularApp').config(configureLogger);
// The decorator allows us to inject custom behaviors
function configureLogger($provide) {
// registers a value/object that can be accessed by providers and services
$provide.constant('logDecorator', logDecorator);
// registers a decorator function
// $provide.decorator intercept $log service letting us add custom functionality
$provide.decorator('$log', logDecorator);
// inject dependencies into logDecorator function
logDecorator.$inject = ['$delegate', 'logEnchance'];
function logDecorator($delegate, logEnchance) {
// logEnchance is the service who modify the $log service
logEnchance( $delegate );
return $delegate;
}
}
内容总结
以上是互联网集市为您收集整理的javascript – 我们可以在Angular JS的装饰器中访问$provide吗?全部内容,希望文章能够帮你解决javascript – 我们可以在Angular JS的装饰器中访问$provide吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。