引用角开发人员指南
module.decorator 此函数与$provide.decorator函数相同,除非它是通过模块API公开的。这允许您将装饰器模式从模块配置块中分离出来。
所以基本上这里有什么区别?是否有一种方法比另一种方法更可取的情况?为什么不总是使用module.decorator呢?
发布于 2016-07-22 16:53:53
Module.decorator是在1.4中作为$provide.decorator的快捷方式引入的。$provide.decorator仍可用于向后兼容性。
$provide方法的明显属性是函数作用域可以访问提供程序和实例注入器:
app.config(($provide, $compileProvider) => {
$provide.decorator('linkService', ($delegate) => {
$compileProvider.aHrefSanitizationWhitelist(...);
return $delegate;
});$provide方法不那么明显但仍然重要的特性是,它们在配置阶段之后影响应用程序,而模块方法不影响,这为延迟加载和其他无文档但可能有益的技术创造了可能性:
app.config(($provide) => {
$provide.value('$provide', $provide));
});
app.run(($provide) => {
// app.decorator('service', ...) will do nothing here
$provide.decorator('service', ...);
});
app.run((service) => { ... });https://stackoverflow.com/questions/38529911
复制相似问题