2013-10-12 197 views
21

這是一個重寫,因爲題外問題:angularjs:強制重新渲染/全面刷新指令模板

我寫了一個下拉指令。我作爲一種工作流使用指令兩次。第一個下拉菜單通過更改操作觸發第二個模型的刷新。雖然模型正確更新,但視圖不會。在下拉列表中選擇項目的次數很多,第二個下拉列表顯示的是帶有新項目的舊項目,儘管角度模型的console.log()是正確的。

該視圖具有無限遞歸。採用NG-包括與納克/模板,做遞歸它自身的ID:

我的顯示模板代碼初始plunkr是這樣的: http://plnkr.co/edit/jera17uCluGsFs8o5hRG?p=preview

我不明白爲什麼認爲不完全刷新?

要更新。

親切的問候, 亞歷

+0

你能提供一個Plunker/jsFiddle腳本嗎? –

+0

我無法如此快速地工作,但基本代碼是... – sp33c

+0

http://plnkr.co/edit/jera17uCluGsFs8o5hRG 假設指令vissible是第二個下拉列表,它獲取更新第一個下拉菜單的狀態......任何時候它的模型改變了,模型是正確的,但是呈現出錯誤。我認爲這是無限嵌套的問題。它可以用作簡單的角碼。 – sp33c

回答

36

通常我做的是使用ui-如果指令,它基本上是一個如果angularui團隊所作的陳述,所以我會把它的元素,這也是該指令說些什麼像:

<div ui-if="mydata.prop" my-custom-directive></div> 

這樣,如果myData.prop改變或我將它設置爲null簡要然後重新它就會刪除,然後transclude我的HTML指令回DOM導致它再次EVAL我的指令。

+3

是ng - 如果在方面相似強制重新渲染? – sp33c

+0

它可能是緩存問題,因爲我在指令中使用ng/template? – sp33c

+1

我不確定ng-if是否會以相同的方式使用ui - 如果這樣做。 Angular可能以不同的方式實現了他們的角色。基本上,UI如果工作是因爲它將它放逐到陰影中,然後將它編譯回來,使其重新渲染。 – btm1