angular.js - angularjs の双方向バインディングはどのように実装されますか?
高洛峰
高洛峰 2017-05-15 16:59:32
0
6
610

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

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

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

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(6)
Ty80

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

HTML

リーリー

スクリプト

リーリー

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

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

リーリー

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

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

リーリー

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

リーリー

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

リーリー

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

リーリー

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

リーリー
いいねを押す +0
巴扎黑

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

いいねを押す +0
巴扎黑

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

いいねを押す +0
伊谢尔伦

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

いいねを押す +0
世界只因有你

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

いいねを押す +0
迷茫

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート