2013-02-28 75 views
3

我可以在指令中觀察一個對象的屬性(實際上是clientHeight)。但是如何根據這個高度來改變其他物體的填充頂部?我知道如何使用jQuery來做到這一點,但我正在尋找一種Angular方式。Angular.js:觀察一個對象的高度並更新其他對象的填充

在Angular中,可以使用指令訪問某個頁面元素。好的,但如何訪問同一指令中的其他頁面元素?

回答

5

有很多方法可以做到這一點。對於下面的所有建議,假設您有兩個指令–一個用於監視clientHeight,另一個用於調整填充。

  • 創建一個服務(注入到兩個指令中)。讓第一個指令修改服務中的對象屬性(例如,someObj.prop1)。其他指令$監視該對象的屬性。
  • 使用事件。讓第一個指令$ emit或$廣播一個事件,第二個指令可以使用$ on(在其鏈接函數或其控制器中)監聽它。
  • 如果存在祖先關係,則可以在後代指令中指定require祖先指令的控制器。一個例子見AngularJS: reuse component with different parent

  • 不推薦,但另一種選擇是:使用$ rootScope而不是服務:在兩個指令中注入$ rootScope。讓第一個指令修改$ rootScope上的對象屬性。其他指令$監視該對象的屬性。

+0

+1。如果您要在應用程序中執行此操作,那麼您更喜歡哪種方法?爲什麼? – 2013-02-28 16:10:21

+2

@Trevor,如果使用指令的兩個元素是相關的,並且始終/自然地具有祖先 - 後裔關係,那麼我會使用'require'。如果可能(現在或將來)在這些指令之間共享一些額外的信息,即服務。如果這是一款一勞永逸的快速應用程序,或者我感覺很懶,$ rootScope或事件。 – 2013-02-28 16:17:16

相關問題