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

angular.js - 试问angularjs的双向绑定是如何实现的?

用过angularjs的人肯定知道他的双向绑定,用起来也是很方便,可是他内部是怎么实现的呢?

视图变化了去更新数据,这个还好理解,也大都知道怎么去模拟一下,但是说到数据变化了去更新视图,关键在于是怎么去判断数据发生了变化。。。

之前想了一下,类似先存储一份oldValue,然后定时去遍历这些,用newValue和oldValue去对比,如果变化了做更新和其他相关的工作。。。

但是觉得这样行吗?自己思索半天觉得也不是很靠谱,希望各位兄弟姐妹不吝教诲!## 标题

高洛峰高洛峰2713日前571

全員に返信(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
  • キャンセル返事