angularjs を使用したことがある人は、その双方向バインディングが非常に便利であることを知っているはずですが、内部的にはどのように実装されているのでしょうか?
ビューが変更されたときにデータを更新することは理解しやすく、ほとんどの人がそれをシミュレートする方法を知っていますが、データが変更されたときにビューを更新する場合、鍵はデータが変更されたことをどのように判断するかにあります。 。 。
以前に考えたのですが、最初に oldValue のコピーを保存し、次にこれらを定期的に走査し、newValue と oldValue を比較し、変更があれば更新やその他の関連作業を行うのと似ています。 。 。
でも、これでいいと思いますか?長い間考えた結果、それはあまり信頼できるものではないと感じますので、兄弟姉妹の皆様には遠慮せずに教えていただければと思います。 ## タイトル
双方向バインディングに似た簡単な例を実装します
HTML
リーリースクリプト
リーリービューが変更されたときにデータを更新する
これは非常に簡単で、命令 myModel をコンパイルするときにイベントをバインドするだけです
リーリーデータ変更によるUIの更新
スコープ内にウォッチャーとダイジェストがあります
リーリースコープに値を割り当ててダイジェストをトリガーすると、UI も同時に更新されます
リーリー リーリーsetTimeout を直接使用すると、結果的に UI が更新されず、次の処理を行う必要があります
リーリーまたは、ダイジェストをトリガーするのに役立つ angular の $timeout を使用します
リーリー疑問を解決するのに役立つ記事がたくさんあります。まず検索してから質問してください。
まず最初に、質問で言及されているangularjsについてはあまり詳しくありませんが、これは少し間違っています。
Knockout にも同様の双方向データ バインディング機能があり、オブザーバー モードで実装され、set メソッドを使用して値を割り当てると、そのオブジェクトに関心のあるオブザーバーにも通知されます。双方向データ バインディングの効果。
angular1 はダーティ チェックです。 。これにより、パフォーマンスの問題も発生します
AngularJS は双方向データ バインディング メカニズムをどのように実装していますか?
参考:
http://teropa.info/build-your-own-angular/build_your_own_angularjs_sample.pdf