裝飾器
Decorator 是一種功能,允許在使用之前修改服務 ,工廠 ,指令或過濾器 。Decorator 用於覆蓋或修改服務的行為。裝飾器函式的返回值可以是原始服務,也可以是替換,包裝和委託原始服務的新服務。
任何裝飾都必須通過注入 $provide
並使用它的 $provide.decorator
功能在角度應用的 config
階段完成。
裝飾器函式注入了
$delegate
物件,以提供對裝飾器中與選擇器匹配的服務的訪問。這個$delegate
將是你正在裝飾的服務。提供給裝飾器的函式的返回值將取代正在裝飾的服務,指令或過濾器。
只有在任何其他方法不合適或證明過於繁瑣時,才應考慮使用裝飾器。如果大型應用程式使用相同的服務,並且有一部分正在改變服務行為,則很容易在流程中產生混淆和/或錯誤。
典型的用例是當你有第三方依賴,你無法升級,但需要它以不同的方式工作或擴充套件它。