2021-03-06

vue 双向数据绑定的原理

双向数据绑定主要是通过数据劫持配合发布订阅者模式实现的

首先使用object.defineProperty中的get和set属性对数据进行依赖收集和派发更新,根据set里数据比对数据是否有变化,通知监听的观察者是否对视图进行更新。

 

实现一个简单的双向数据绑定

<input type="text" id="a">

<span id='b'></span>

let obj = {},val = '1'

Object.defineProperty(obj,'val',{

get:()=>{

  return val
}

set:(newValue){

val = newValue
document.getElementById('a').value = val

document.getElementById('b').innerText = val

}

})

window.addEventListener('keyup',(e)=>{

obj.val = e.target.value

})

 

以上就是简单的双向数据绑定

明天对发布订阅者模式进行详细说明

 

小知识点:

vue-loader对.vue文件进行解析和转义,提前vue文件中的html,js和css,再分别提交给相对应的loader去执行

css-loader对加载提取出来的css

vue-template-compiler对html模板转换成可执行的JavaScript内容

vue中对数组或者object类型有无法监听到实现双向的时候,可以使用vue.set()的方式将数组和对象进行绑定。除此之外,数组中对长度和某个内容的修改还可以使用splice

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值