精华内容
下载资源
问答
  • vue双向数据绑定

    2021-01-08 15:58:03
    vue双向数据绑定原理 vue数据双向绑定是通过数据劫持结合发布者-订阅模式的方式来实现的,通过Object.defineProperty()来来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,出发相应的监听回调来渲染...

    vue双向数据绑定原理

    vue数据双向绑定是通过数据劫持结合发布者-订阅模式的方式来实现的,通过Object.defineProperty()来来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,出发相应的监听回调来渲染视图。

    var vm = new Vue({
        data: {
            obj: {
                a: 1
            }
        },
        created: function () {
            console.log(this.obj);
        }
    });
    

    具体步骤

    第一步:

    需要observer的数据对象进行递归遍历,包括子属性对象的属性,都加上setter和getter这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化。

    第二部:

    compile解析模板指令,将模板中的变量替换成数据,然后初始化页面渲染视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图。

    第三步:

    Watcher订阅者是Observer和Compile之间通信的桥梁,主要做的事情是:

    1. 在自身实例化时往属性订阅器(dep)里面添加自己
    2. 自身必须有一个update()方法
    3. 待属性变动dep.notice()通知时,能调用自身的updata()方法,并触发Compile中绑定的回调,则功成身退。
    第四步:

    MVVM作为数据绑定的入口,整合Observer,Compile和Watcher三者,通过Observer来监听自己的model数据变化,通过Compile来解析编译模板指令,最终利用Warcher搭起Observer和Complie之间通信桥梁,达到数据变化>视图更新;视图个交互变化(input)>数据model变更的双向数据绑定效果。

    名词解释

    1.什么是setter,getter

    1. **数据属性:**就是我们经常使用的属性
    2. **访问器属性:**也称存取器属性(存取器属性就是一组获取和设置值的函数)

    在这里插入图片描述
    我们可以看到属性a有两个相对应的get和set方法,为什么会多出两个方法呢?因为是通过Object.defineProperty()来实现数据劫持的。

    Object.defineProperty()

    语法

    Object.defineProperty(obj,prop,descriptor)

    参数

    obj:要定义属性的对象
    prop:要定义或修改属性的名称或Symbol
    descriptor:要定义或修改属性的描述符

    返回值

    被传递给函数的对象。

    在ES6中,由于Symbol类型的特殊性,用Symbol类型的值来做对象的key与常规的定义或修改不同,而Object.defineProperty()是定义可以为Symbol的属性的方法之一。

    展开全文
  • Vue双向数据绑定

    2021-01-08 17:07:27
    vue双向数据绑定原理 话述 vue.js是采用数据劫持结合发布者-订阅者模式的方式,通过object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染试图 实现...

    vue双向数据绑定原理

    话述
    

    vue.js是采用数据劫持结合发布者-订阅者模式的方式,通过object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染试图

    实现步骤

    observer主要是负责对Vue数据进行数据劫持,使用数据拥有getter和setter方法
    指令解析器负责绑定数据和指令,绑定试图更新方法
    watcher负责数据监听,当数据发生改变通知订阅者,调用试图更新函数更新试图

    object.defineProperty()的理解

    ·作用

    object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。

    ·参数

    object.defineProperty(obj,prop,descriptor)
    obj要定义属性的对象。
    prop要定义或修改的属性的名称。
    descriptor要定义或修改的属性描述符。

    代码展示

    var obj = { b:“123” }
    console.log(obj)
    Objiect.defineProperty(obj,“a”,{
    value:37, //值
    writable:true, 是否可以被修改
    enumerable:true, 是否可以被枚举也就是是否可以遍历
    configurable:true 是否可以被删除
    });
    // 控制台输出
    for ( let i in Object.keys(obj)) {
    console.log(i)
    }
    obj.a = “36”
    console.log(obj)

    展开全文
  • VUE双向数据绑定

    2019-01-23 20:48:26
    v-model实现input 和 textarea 元素中的双向数据绑定 <!DOCTYPE html> <html> <head>...Vue双向数据绑定</title&
    • v-model实现input 和 textarea 元素中的双向数据绑定

    在这里插入图片描述

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Vue双向数据绑定</title>
    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    </head>
    <body>
    <div id="app">
      <p>input元素:</p>
      <input v-model="message1" placeholder="默认值……">
      <p>消息是: {{ message1 }}</p>
    	
      <p>textarea元素:</p>
      <p>{{ message2 }}</p>
      <textarea v-model="message2" placeholder="默认值……"></textarea>
    	
    </div>
    
    <script>
    new Vue({
      el: '#app',
      data: {
        message1: 'input双向数据绑定',
    	message2: 'textarea双向数据绑定'
      }
    })
    </script>
    </body>
    </html>
    
    • ref 实现数据双向

    ref解释:https://blog.csdn.net/weixin_41646716/article/details/80455506
    在这里插入图片描述

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Vue双向数据绑定</title>
    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    </head>
    <body>
    <div id="app">
      <p>input元素:</p>
      <input ref="name" v-on:keyup="checkName" />
      <p>消息是: {{ name }}</p>	
    </div>
    
    <script>
    new Vue({
      el: '#app',
      data: {
    	name:""
      },
      methods:{
    	checkName() {
            this.name = this.$refs.name.value;
         }
      }
    })
    </script>
    </body>
    </html>
    
    展开全文
  • vue 双向数据绑定原理

    2020-08-18 14:21:10
    vue 双向数据绑定原理。
  • 主要介绍了Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定),非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
  • 模拟vue双向数据绑定示例
  • vue 中想要知道 vue 双向数据绑定原理
  • vue 双向数据绑定

    2020-08-18 14:25:32
  • vue双向数据绑定原理

    2018-04-26 10:51:00
    vue双向数据绑定的原理 剖析Vue原理&实现双向绑定MVVM vue双向数据绑定原理探究(附demo) 浅谈vue,angular,react数据双向绑定原理分析 Vue双向绑定的实现原理Object.defineproperty著作权归作者所有。商业转....
  • 主要介绍了vue双向数据绑定的原理以及知识点总结,并做了代码实例分析,有需要的朋友参考下。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,902
精华内容 3,960
关键字:

vue双向数据绑定

vue 订阅