検索

ホームページ  >  に質問  >  本文

angular.js - angularjs の双方向バインディングはどのように実装されますか?

angularjs を使用したことがある人は、その双方向バインディングが非常に便利であることを知っているはずですが、内部的にはどのように実装されているのでしょうか?

ビューが変更されたときにデータを更新することは理解しやすく、ほとんどの人がそれをシミュレートする方法を知っていますが、データが変更されたときにビューを更新する場合、鍵はデータが変更されたことをどのように判断するかにあります。 。 。

以前に考えたのですが、最初に oldValue のコピーを保存し、次にこれらを定期的に走査し、newValue と oldValue を比較し、変更があれば更新やその他の関連作業を行うのと似ています。 。 。

でも、これでいいと思いますか?長い間考えた結果、それはあまり信頼できるものではないと感じますので、兄弟姉妹の皆様には遠慮せずに教えていただければと思います。 ## タイトル

高洛峰高洛峰2784日前608

全員に返信(6)返信します

  • PHP中文网

    PHP中文网2017-05-15 17:01:32

    双方向バインディングに似た簡単な例を実装します

    HTML

    リーリー

    スクリプト

    リーリー

    ビューが変更されたときにデータを更新する

    これは非常に簡単で、命令 myModel をコンパイルするときにイベントをバインドするだけです

    リーリー

    データ変更によるUIの更新

    スコープ内にウォッチャーとダイジェストがあります

    リーリー

    スコープに値を割り当ててダイジェストをトリガーすると、UI も同時に更新されます

    リーリー

    スコープに値を直接割り当てても UI は更新されません。ほとんどの場合、Angular はダイジェストをアクティブにトリガーするため、スコープを指定するだけでよいという印象を与えます。何気なくその結果、理解できない状況が発生します。たとえば

    リーリー

    setTimeout を直接使用すると、結果的に UI が更新されず、次の処理を行う必要があります

    リーリー

    または、ダイジェストをトリガーするのに役立つ angular の $timeout を使用します

    リーリー

    返事
    0
  • 巴扎黑

    巴扎黑2017-05-15 17:01:32

    疑問を解決するのに役立つ記事がたくさんあります。まず検索してから質問してください。

    返事
    0
  • 巴扎黑

    巴扎黑2017-05-15 17:01:32

    まず最初に、質問で言及されているangularjsについてはあまり詳しくありませんが、これは少し間違っています。
    Knockout にも同様の双方向データ バインディング機能があり、オブザーバー モードで実装され、set メソッドを使用して値を割り当てると、そのオブジェクトに関心のあるオブザーバーにも通知されます。双方向データ バインディングの効果。

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-15 17:01:32

    angular1 はダーティ チェックです。 。これにより、パフォーマンスの問題も発生します

    返事
    0
  • 世界只因有你

    世界只因有你2017-05-15 17:01:32

    AngularJS は双方向データ バインディング メカニズムをどのように実装していますか?

    返事
    0
  • 迷茫

    迷茫2017-05-15 17:01:32

    参考:
    http://teropa.info/build-your-own-angular/build_your_own_angularjs_sample.pdf

    返事
    0
  • キャンセル返事