AngularJS データバインドが反映されない なんで

AngularJS
Table of Contents

AngularJS-large[1]

とりあえず、以下を実行したら反映された。

$scope.$apply();

 

次のイベントが呼ばれるまで反映されないときがある。

AngularJSでは、dirty-checkingという方式で実装されいるそうです。

バインドしているすべての変数について、特定のタイミングで前回の値と今回の値を比較し、値に変化があればDOMを書き換えるという仕組みです。

 

データが変更されてるかチェックするデフォルトは以下のタイミングらしい

イベント    概要
ナビゲーション    ブラウザの location 変更時
ネットワーク  $http, $resource レスポンス受信時
DOM イベント ng-click, ng-mouseover などの実行時
タイマー    $timeout によるタイマー処理の実行時

 

 

参考URL

http://angularjsninja.com/blog/2013/12/27/angularjs-apply/
AngularJSのパフォーマンス改善入門 - Qiita
これまでAngularJSでアプリを作ってきた中で、いくつかパフォーマンスの問題に遭遇しました。それらの問題は、AngularJSの仕組みを十分に理解できていないために、よくないコードを書いてしま…