装饰器

Decorator 是一种功能,允许在使用之前修改服务工厂指令过滤器 。Decorator 用于覆盖或修改服务的行为。装饰器函数的返回值可以是原始服务,也可以是替换,包装和委托原始服务的新服务。

任何装饰都必须通过注入 $provide 并使用它的 $provide.decorator 功能在角度应用的 config 阶段完成。

装饰器函数注入了 $delegate 对象,以提供对装饰器中与选择器匹配的服务的访问。这个 $delegate 将是你正在装饰的服务。提供给装饰器的函数的返回值将取代正在装饰的服务,指令或过滤器。

只有在任何其他方法不合适或证明过于繁琐时,才应考虑使用装饰器。如果大型应用程序使用相同的服务,并且有一部分正在改变服务行为,则很容易在流程中产生混淆和/或错误。

典型的用例是当你有第三方依赖,你无法升级,但需要它以不同的方式工作或扩展它。