我正在嘗試關注this SO answer explaining how to render a recursive JSON structure using a directive。但是,與提供的答案不同,我的數據是而不是在DOM加載並且Angular第一次運行時已知。更新服務更改時的Angular JS指令
取而代之,我的數據從HTML輸入字段中檢索並存儲在Angular Service中(當用戶提交表單時)。
當服務的數據被修改時,我怎樣才能保持Angular Directive最新?響應
更新回答
@musically_ut提供了絕佳的答案,它幫助,但透露了一個相關的問題,防止執行(此更新)。
指令呈現HTML,其中包含訪問存儲在$scope
中的數據的Angular {{expressions}}
。由於服務已準備好數據,因此原始解決方案爲$watch
。我如何確保在指令之前將「新」數據添加到$scope
之前?
的架構和流程的概要是:
ControllerA
- >從用戶獲取輸入ControllerA
- >使用服務轉換數據ControllerB
- 在>$watch
更改服務Directive
- >$watch
for cha在服務ngesControllerB
- >顯示變換後的數據(從服務)使用 指令
的問題是步驟5和6之間 - >到$scope
Directive
添加數據。在ControllerB將數據添加到$scope
之前,指令呈現{{expressions}}
。即使這樣做確實有效,但它感覺太複雜,而且'hacky'。 實際上,爲了迴歸,我在ControllerB中使用$watch
來監聽轉換數據何時準備好在服務中。即使這感覺有點矯枉過正(服務不進行異步調用)。
我在角度新,以及關於看着指示服務改變搜索信息到您的文章。據我瞭解你(根據我最近閱讀的內容),你不應該'在你的** ControllerB **中向範圍添加數據',你最好應該向**服務**報告它,將自動報告給** controllerB **範圍。順便說一句,您將能夠跟蹤** ** ** **(我的意思是輕鬆地跟蹤'external'** controllerB **作用域)的服務**更改。但也許我錯了。 –