我搜索了很多設計模式,但沒有發現如何實現要在某些控制器和HTML標記中使用的函數。我真的想逃避複製粘貼功能,所以這裏出現問題。用於實現實用功能的角度良好設計模式
我有一些項目存儲在localStorage作爲一個實體數組,其中每個都有一個價格,數量和折扣。將這個數組稱爲購物車。在某個頁面中,我需要將價格總和作爲「整體價格」進行插值。這就是「購物車展示頁面」,它基本上是購物車中的物品清單。另一方面,我有一個表單的「訂單頁面」,其中還應顯示總體價格。假設這個頁面是用兩個不同的控制器操作的:OrderController和CartController,在這兩個控件中我有一個叫做calculatePrice的函數,它返回整體和,然後插入到html中的order.html和cart.html中。
所以它發生我已經做了一些複製粘貼。如果(可能在最近的將來)我有另一個控制器/視圖需要這個功能,我會再次複製粘貼。
我對這個問題的看法:
1)創建$ rootScope功能calculatePrice,只是把它當作是,內外控制器和視圖。不希望在我的應用程序的「運行」週期內插入太多的命令式代碼
2)爲實用程序函數創建一個服務,在控制器中注入它,並且只聲明式樣,如'$ scope.someFunction = service.someFunction」
3)創建一個服務,它注入了app.run函數中,並將其連接到rootScope
但我不認爲任何這是正確的。我想找到最可能的乾淨解決方案。
這有什麼錯#2?這是最常見的方法 – charlietfl
@charlietfl只是不想在運行函數中編寫登錄。所以我個人推薦3,只是想知道一些更有經驗的意見。 如果我寫run函數裏面太多的實用功能,在app.js文件將很快成爲污染,難以管理,即使我創造出一個單獨的應用程序只是爲了事業,並注入其主要的應用程序內。 –
你應該避免污染$ rootScope – charlietfl