裝飾器

Decorator 是一種功能,允許在使用之前修改服務工廠指令過濾器 。Decorator 用於覆蓋或修改服務的行為。裝飾器函式的返回值可以是原始服務,也可以是替換,包裝和委託原始服務的新服務。

任何裝飾都必須通過注入 $provide 並使用它的 $provide.decorator 功能在角度應用的 config 階段完成。

裝飾器函式注入了 $delegate 物件,以提供對裝飾器中與選擇器匹配的服務的訪問。這個 $delegate 將是你正在裝飾的服務。提供給裝飾器的函式的返回值將取代正在裝飾的服務,指令或過濾器。

只有在任何其他方法不合適或證明過於繁瑣時,才應考慮使用裝飾器。如果大型應用程式使用相同的服務,並且有一部分正在改變服務行為,則很容易在流程中產生混淆和/或錯誤。

典型的用例是當你有第三方依賴,你無法升級,但需要它以不同的方式工作或擴充套件它。