博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue数据绑定原理html,vue双向绑定原理
阅读量:5254 次
发布时间:2019-06-14

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

d3199a94016d993763e3dcbdae82285a.png

简析mvvm框架

目前angular,reat和vue都是mvvm类型的框架

以vue为例

aaded1f18b1529f23f329df1e0787265.png

这里的vm 就是vue框架,它相当于中间枢纽的作用,连接着model 和view.当前台显示的view发生变化了,它会实时反应到viewModel上,如果有需要,viewModel 会通过ajax等方法将改变的数据 传递给后台model

同时从后台model获取过来的数据,通过vm将值响应到前台UI上

双向绑定原理

dc9936a42e84a602be2c7c9ccc3a1e7f.png

vm的核心是view 和 data当data 有变化的时候它通过Object.defineProperty()方法中的set方法进行监控,并调用在此之前已经定义好data 和view的关系了的回调函数,来通知view进行数据的改变

而view 发生改变则是通过底层的input 事件来进行data的响应更改

vue是通过Object.defineProperty()来实现数据劫持的。

Object.defineProperty( )是用来做什么的?它可以来控制一个对象属性的一些特有操作,比如读写权、是否可以枚举,这里我们主要先来研究下它对应的两个描述属性get和setvarBook= {}

varname= '';

Object.defineProperty(Book, 'name', {

set:function(value) {

name= value;

console.log('你取了一个书名叫做'+ value);

},

get:function() {

return'《'+ name+ '》'

}

})

console.log(Book)

Book.name= 'vue权威指南'; // 你取了一个书名叫做vue权威指南

console.log(Book.name); // 《vue权威指南》

// get 是在读取那么属性的时候触发的

// set 是在设置属性值的时候触发的

实现方法: 观察者模式

2e60365ad12626e643906fffb6856c6c.png

Observer(Objec.defineProperty中的set)监听data的变化,当data有变化的时候通知观察者列表Dep(里面有与data变化对应的update函数),watcher负责向观察者列表里添加(订阅)对应的更新函数,Dep里的更新函数执行完了之后将最新的值更新到view上。

具体的代码实现可参考:https://www.cnblogs.com/libin-1/p/6893712.html

想要了解更多相关知识,可访问 前端学习网站!!

你可能感兴趣的文章
反弹SHELL
查看>>
关闭Chrome浏览器的自动更新和升级提示
查看>>
移动、尺寸改变
查看>>
poj2255Tree Recovery【二叉树重构】
查看>>
tcpcopy 流量复制工具
查看>>
vue和react的区别
查看>>
第十一次作业
查看>>
负载均衡策略
查看>>
微信智能开放平台
查看>>
ArcGIS Engine 中的绘制与编辑
查看>>
Oracle--通配符、Escape转义字符、模糊查询语句
查看>>
子网划分讲解及练习(一)
查看>>
c# 文件笔记
查看>>
第一页 - 工具的使用(webstorm)
查看>>
Linux 进程资源用量监控和按用户设置进程限制
查看>>
IE浏览器整页截屏程序(二)
查看>>
D3.js 之 d3-shap 简介(转)
查看>>
制作满天星空
查看>>
类和结构
查看>>
CSS3选择器(二)之属性选择器
查看>>