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

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/

http://qiita.com/zoetro/items/5156aef51222e81dd022