iT邦幫忙

DAY 5
2

實習、專題除錯筆記系列 第 5

實習、專題除錯筆記(五)為什麼 binding 的值有改變,畫面卻沒有相對應的變更?

  • 分享至 

  • xImage
  •  

問題五 -- 為什麼 binding 的值有改變,畫面(DOM)卻沒有相對應的變更?

會有這樣的問題是因為 Angular 沒有察覺到數值的變化,但是其實他已經改變了。為什麼會這樣呢?這個要從一開始講起,Angular 為了讓 Data 的變更能夠即時的反應,所有的功能最後都會呼叫 這個函式,而這個函式再去 Call $scope.digest() 這個函式來檢測數值是否有變更!

基本上 Angular 原生的函式操作都不會出現這個問題,而且你也不能呼叫 $scope.$apply(),因為你不能再 $scope.$apply() 再包一個 $scope.$apply(), 這個問題只有再瀏覽器 DOM events, setTimeout, XHR(XMLHttpREquest) 或是使用第三方套件時才會發生的狀況,所以我們會需要自己使用 $scope.$apply() 來解決這個問題。

範例程式碼(用 timeout 來模擬環境)

http://codepen.io/Sandeep92/pen/fukyn

解決方法

http://codepen.io/Sandeep92/pen/bEmBn

參考資料:http://www.sitepoint.com/understanding-angulars-apply-digest/


上一篇
實習、專題除錯筆記(四)為什麼用 PHP 的 json_encode 總是無法正確的處理中文呢?
下一篇
實習、專題除錯筆記(六)我用 coffeescript 為什麼錯誤的時候顯示的行數是錯誤的?
系列文
實習、專題除錯筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
CaesarChi
iT邦新手 3 級 ‧ 2014-09-21 23:28:46

可以用 $timeout . 連結都無法連線,網址複製有誤。

0
e222et
iT邦新手 2 級 ‧ 2014-09-22 00:28:09

確認兩個網址的超連結都有問題,已經修正囉
不知道為什麼會有問題就是了

我要留言

立即登入留言