2014/07/03

angularJS scope.$apply

JavaScript is Turn Based
私たちが記述するJavaScriptのコードは一度に全て実行されるのではなく、ターンベースで実行される。各ターンは始めから終わりまで中断せずに走り、ターンが走っている間はブラウザ上では何も起きない。他のどのJavaScriptのコードも走っていない時は、Webページインタフェースは完全に固まる。だから不十分なJavaScriptコードはウェブページの動きを止めてしまう。

変更した時に通知でき、ページを更新できる。==>EmberJS や KnockoutJS

どのJavaScriptコードのターンが終わった時でも、値が変化したことを確認する。=>AngularJS
この戦略を動かすためには、データが変更された可能性がある時点を知る必要がある。そしてこれが $scope.$apply が動き始める場所だ。
  $scope.$apply(function () { $scope.msgs.push(JSON.parse(msg.data)); });

==>このapplyの中の物は、後で実行される感じだね。。。