博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue 源码分析 双向数据binding的方法
阅读量:6412 次
发布时间:2019-06-23

本文共 1146 字,大约阅读时间需要 3 分钟。

我们的目的是:更新数据->自动更新ui 1.首要检测数据有没有变化 2.更新ui

根据 vue 的思想, es5 提供我们一个方法,为一个对象某一个属性设置监听方法。

var data = {          a: 5;    }         //我们设置了 data对象的a属性的监听      Object.defineProperty(data, a, {           set: function(newVal) {                  console.log(newVal,'为data.a设置了新值');          },          get: function() {               console.log('获取data.a');                return variable;           }       )    data.a = 10;//会调用set方法    //打印:10为data.a设置了新值。    var c = data.a;//会调用gat方法    //打印:获取data.a复制代码
  • 吐槽一下,这个Swift语法一模一样啊, 但是 Swift 除了 set 和 gat 方法以外还有 willSet 即将改变和 didSet 改变后的方法。

  • 这是 vue 官方的源码地址 https://github.com/vuejs/vue/blob/871ed9126639c9128c18bb2f19e6afd42c0c5ad9/explorations%2Fgetset.html

###我把源码稍微修改了(基本没动),添加了一些注释。 Chrome 可以直接粘贴运行。

  1. 先用正则把{
    {}}这里面的数据找到。 以属性为“data-element-binding”绑定到DOM树上
  2. 根据DOM树上“data-element-binding”,找到当前的DOM。
  3. 根据DOM里的参数与data里的属性,通过defineProperty绑定。
  4. 更新data数据,然后DOM自动更新了。
    ideal    

{

{msg}}

{

{msg}}

{

{msg}}

{

{what}}

{

{hey}}

复制代码

个人博客: www.liangtongzhuo.com

转载于:https://juejin.im/post/5a31f136f265da432b4ad564

你可能感兴趣的文章
轻松实现QQ用户接入
查看>>
ToString精确到毫秒
查看>>
关于Android横竖屏切换的解决方法
查看>>
POJ_2184 Cow Exhibition (0-1背包)
查看>>
一段扫flash跨站的脚本
查看>>
算法洗脑系列(8篇)——第五篇 分治思想
查看>>
C++基本数据类型
查看>>
win7 64位下装office报1402的错误的解决方法
查看>>
iPhone开发资源汇总(更新中)
查看>>
PHP+七牛云存储上传图片代码片段
查看>>
【LeetCode】23. Merge k Sorted Lists
查看>>
端口扫描器——ZenmapKail Linux渗透测
查看>>
***phpredis扩展安装总结
查看>>
JAVASCRIPT实现网页版:俄罗斯方块
查看>>
Delphi IOS 蓝牙锁屏后台运行
查看>>
C#回调实现的一般过程
查看>>
mssql sql高效关联子查询的update 批量更新
查看>>
Atitit.病毒木马程序的感染 传播扩散 原理
查看>>
Android Studio Gradle
查看>>
jquery-autocomplete 参数说明
查看>>