Vue数据双向绑定的原理是什么?

首先是演示效果,具体原理直接下滑到最下方

1.简单模拟一下Vue的双向数据绑定

 html部分:

    发布者:<input type="text" placeholder="发布者">
    <br>
    订阅者:<span>订阅者</span>

 JavaScript部分:

    let input = document.querySelector('input')
    let span = document.querySelector('span')
    let obj = {}
    let value = ''
    Object.defineProperty(obj, 'inputvalue', {
        get() {
            return value
        },
        set(newValue) {
            input.value = newValue
            span.innerHTML = newValue
        }
    })
    // 订阅者 DOM元素
    input.value = obj.inputvalue
    span.innerHTML = obj.inputvalue
    // 监听输入的事件
    input.addEventListener('keyup', function (e) {
        // 修改inputvalue 达到修改input.value 以及input.innerHTML
        // 发布者
        obj.inputvalue = e.target.value // 触发了set
    })

 效果图:

 2.vue的双向数据绑定

代码部分:

<template>
  <div>
    <br>
    发布者:<input type="text" placeholder="被监听数据"  v-model="msg">
    <br>
    订阅者:<span>{{msg}}</span>
  </div>
</template>

<script>
export default {
  // name: 'Testcc',
  data () {
    return {
      msg: 'this is testcc'
    }
  }
}
</script>

 效果图

Vue数据双向绑定的原理是什么?

vue 的数据双向绑定的原理就是用的 Object.defineProperty 这个方法,里面定义了

setter 和getter 方法,通过观察者模式(发布订阅模式)来监听数据的变化,从而做相应的逻辑处理。

即利用Object.defineProperty定义新属性或修改原有的属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值