2016-12-24 49 views
-1

我搜索了很多設計模式,但沒有發現如何實現要在某些控制器和HTML標記中使用的函數。我真的想逃避複製粘貼功能,所以這裏出現問題。用於實現實用功能的角度良好設計模式

我有一些項目存儲在localStorage作爲一個實體數組,其中每個都有一個價格,數量和折扣。將這個數組稱爲購物車。在某個頁面中,我需要將價格總和作爲「整體價格」進行插值。這就是「購物車展示頁面」,它基本上是購物車中的物品清單。另一方面,我有一個表單的「訂單頁面」,其中還應顯示總體價格。假設這個頁面是用兩個不同的控制器操作的:OrderController和CartController,在這兩個控件中我有一個叫做calculatePrice的函數,它返回整體和,然後插入到html中的order.html和cart.html中。

所以它發生我已經做了一些複製粘貼。如果(可能在最近的將來)我有另一個控制器/視圖需要這個功能,我會再次複製粘貼。

我對這個問題的看法:

1)創建$ rootScope功能calculatePrice,只是把它當作是,內外控制器和視圖。不希望在我的應用程序的「運行」週期內插入太多的命令式代碼

2)爲實用程序函數創建一個服務,在控制器中注入它,並且只聲明式樣,如'$ scope.someFunction = service.someFunction」

3)創建一個服務,它注入了app.run函數中,並將其連接到rootScope

但我不認爲任何這是正確的。我想找到最可能的乾淨解決方案。

+0

這有什麼錯#2?這是最常見的方法 – charlietfl

+0

@charlietfl只是不想在運行函數中編寫登錄。所以我個人推薦3,只是想知道一些更有經驗的意見。 如果我寫run函數裏面太多的實用功能,在app.js文件將很快成爲污染,難以管理,即使我創造出一個單獨的應用程序只是爲了事業,並注入其主要的應用程序內。 –

+1

你應該避免污染$ rootScope – charlietfl

回答

0

我想你可以創建一個工廠,因爲它是實例化只有一次,把你的功能有,並注入它的控制,當你需要它,並分配所需的函數變量在$範圍對象,因爲任何HTML視圖應該鏈接到一個控制器。我強烈建議你遵循一些着名的開發人員的一些angularjs風格指導規則,試試這個我相信這是最好的。

style guild for angularjs 1 & style guide for angularjs 2