我對角度相當陌生,並試圖真正學會如何組織代碼,以便將來的同事能夠快速找到解決方法。AngularJS:指令與控制器 - 什麼邏輯放在哪裏?
我知道的一個規則是「如果它操縱DOM,把它放入一個指令」,我遵守。
但是仍然有些時候我不確定把我的方法放在哪裏,因爲我可以把它們放到主應用程序控制器中,放入一個作爲控制器提供的控制器中,或者甚至在指令中的「控制器」選項該指令(選項「鏈接」)。
有了過濾器和服務,我很清楚,但是對於控制器和指令,這條線變得非常模糊。 我已經意識到,即使有一個小應用程序,我在這裏和那裏傳播了一些代碼,它已經令人困惑,即使對我自己也是如此。所以我想要更好地組織我的代碼來獲得一些Tipps。
所以我想我的主要問題是:
1)有一個很好的經驗法則知道什麼代碼放在哪裏?
或者如果這太抽象這裏有一些例子:
2)我有一個指令,只在我的應用程序中使用模板。當我點擊元素時會發生某些事情。我已經知道它更喜歡使用ng-click指令來綁定鏈接函數中的點擊事件。
但是我應該在哪裏定義在ng-click中提供的方法?
- A)應用程序的主要控制器。 B)指令的「鏈接」功能。
- C)向指令添加一個控制器(使用「控制器」選項)並在那裏定義它。
3)如果我打算在其他地方重新使用指令,2)的答案是否會有所不同?
4)不同的情景:
我有一個按鈕,點擊並拖動它應該移到一個完全無關的元素時。
我......
- A)應該創建一個指令,並根據通過屬性影響模板&行爲?
- B)創建兩個指令(一個用於句柄,一個用於目標元素)
如果是這樣,它又提出了將方法放在哪裏來處理拖動的問題?
注:
我知道答案可能有點依賴於個人的意見,但我還挺希望有一些「規則」,或者,我可以爲未來恪守「做正確的方式」發展。 爲簡明起見,我沒有包含任何代碼。 如果需要答案,我很樂意提供。
謝謝你的時間。
我一直認爲僞指令的jQuery插件類似於jQuery用戶界面上發現的相當。例如,您可能有一個特殊輸入類型,如日期或時間。或者,也許你會創建一個國家和/或語言選擇器。它們應該是接受參數然後發出事件,觸發回調或更新模型的黑盒子。 –