1. 程式人生 > >angularJs中修改controller後的資料沒有重新渲染頁面

angularJs中修改controller後的資料沒有重新渲染頁面

AngularJS只會關心在AngularJS的執行上下文中的發生的資料模型(model)的變化(比如,改變資料的程式碼在$apply()裡面)。AngularJS內建的指令也會自動觸發$digest迴圈所以任何資料模型(model)的改變都會反映到檢視中。但是,如果我們更改一個不在AngularJS執行上下文中的資料模型(model),就需要人為的呼叫$apply()來提醒AngularJS資料發生變化了。就像是要告訴AngularJS,我們改變了一些資料,他應該啟用監聽器以便於讓我們所做的改變能夠反映出來。例如,當使用Javascript的setTimeout()函式來更新一個數據模型的時候,AngularJS就沒辦法知道你改變了資料模型。這種情況下,呼叫$apply
()來觸發$digest迴圈就是你的責任了。類似的,如果你寫了一個指令,這個指令是設定了一個DOM事件監聽器,更改資料模型的程式碼在事件處理函式裡,那麼,也需要呼叫$apply()來保證更改能夠反映出來。