vue2.x双向数据绑定原理Object.definPropetery

<input type="text" v-modle="aaa">
<div v-text>{{ aaa }}</div>
1.0 概念: 当视图发生变化,数据改变(如输入框的输入数据,数据改变)
		  数据改变,视图发生变化(当数据发生变化,div中的aaa发生变化)
2.0 实现原理是通过 Object.defineProperty(obj,'key',{
        get() {
            // 当获取对象属性值会触发
        },
        set(value) {
            // 当给对象新增属性时会触发
        }
	})
案例如下: 视图
<input type="text" v-modle>
<div v-text></div>
<div v-text></div>
<div v-text></div>
// 实现步骤

1.0 设置一个空对象,用于创建一个数据源
var data = {}

2.0 使用Object的内置方法 definProperty()去监听对象属性的操作
Object.defineProperty(data,'name',{
	get(){
		return _name
	},
	set(value) {
		_name = value
		// 操作value
		document.querySeletor('[v-text]').forEach(item=> {
			item.innerHTML = value
		})
	}
})
3.0 操作视图,当输入框的值发生改变,修改data中的值
document.querySelector('[v-model]').oninput = function() {
	// data.name 会触发 set方法,set方法中又会触发 视图的改变
	data.name = this.value
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值