mvvm数据双向绑定实现的原理

全栈素食者
• 阅读 3258

以Vue.js框架为例子,使用的mvvm模式

mvvm数据双向绑定实现的原理
view指的是页面的html和css构成的视图。
model指的是从后端取到的数据模型
viewmodel 指的是前端开发人员组织生成和维护的视图数据层。这一层包含的是视图行为和数据。
视图行为指的是如页面加载进来时请求什么,将指定的数据放到指定的元素上,点击某个元素触发某事件。当viewmodel处理好后则会将对应的数据展现到view层。

双向绑定
例如有一个变量name,通过输入input框的值来给它赋值,使用原生js的方式是给input框绑定input事件,每次触发该事件的时候再把值赋给name。
如果实现了数据的双向绑定,则当input的value发生改变时,name的值也会自动更新。通过请求数据获取别的js操作改变name的值时,在view中的input也会自动更新,这就是所谓的数据双向绑定。


双向绑定的好处在于不管是data(也就是name)或者视图(input)发生了改动另外一个都可以跟着变化,不需要再手动给它们赋值。

实现代码

//定义一个对象
let obj = {},txt = '';
  Object.defineProperty(obj,'txt',{
    set(val){
      txt = val || '';
      document.getElementsByTagName('input')[0].value = txt;
      document.getElementsByTagName('p')[0].innerHTML = txt;
    },
    get(){
      
      return txt;
    }
  })
  // keyup会触发 obj的set方法
  document.addEventListener('keyup',(e)=>{
    obj.txt = e.target.value;
  })
点赞
收藏
评论区
推荐文章
待兔 待兔
1年前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
九旬 九旬
4年前
前端培训-Vue专题之Vue基础
简介特点:MVVM框架,双向绑定,数据驱动,单页面,组件化。区别Vue和jQuery的区别:不直接操作DOM,而是操作数据。案例:HelloWorld你好,世界HTML代码:xml<h1msg</h1jQuery实现javascript$("h1").text("你好,世界");Vue实现javascriptthis.msg'你好,世界'
Easter79 Easter79
4年前
Vue 入门
Vue.js是构建用户界面的MVVM框架 ,只关注视图层Vue将DOM和数据绑定起来,一旦创建了绑定,DOM将和数据保持同步,每当变更了数据,DOM也会相应地更新。这样就减少了不必要的DOM操作提高渲染效率,让前端程序员只需要关心业务逻辑不再关心DOM是如何渲染的MVC和MVVM的区别:MVC是后端分层开发概念,MVVM是前端视图层
劳伦斯 劳伦斯
4年前
前端面试题自检 Vue 网络 浏览器 性能优化部分
框架VueMVVM是什么?ModelViewViewModel,Model表示数据模型层。view表示视图层,ViewModel是View和Model层的桥梁,数据绑定到viewModel层并自动渲染到页面中,视图变化通知viewModel层更新数据。Vue的生命周期
Souleigh ✨ Souleigh ✨
5年前
php指的是什么?
PHP(全称:HypertextPreprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入H
Anthony555 Anthony555
4年前
前端面试系列——Vue面试题
Vue双向绑定原理mvvm双向绑定,采用数据劫持结合发布者订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter、getter,在数据变动时发布消息给订阅者,触发相应的监听回调。双
Stella981 Stella981
4年前
Android开发MVVM设计模式的实现及ButterKnife兼容结合源码详解并总结优缺点
MVVM设计模式主要是view通过中间件viewModel与model数据模型交互,咱们可以看一下流程图:!(https://imgblog.csdnimg.cn/20201015155610645.png?xossprocessimage/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_a
Wesley13 Wesley13
4年前
Qt mvc学习一
 mvc是经典的三层结构,将数据,视图和逻辑分离。Qt中的Model/View框架,实现了这个模式。在Qt中这个模式设计到三个类,model类,view类和delegate类。model类保存数据,view复制显示,而delegate负责协调model和view之间的数据edit(编辑)和render(渲染)。这些在model子类中需要实现的方法可以分为
Stella981 Stella981
4年前
MVVM和MVC的区别,以及MVVM的缺点
MVVM和MVC的区别MVC和MVVM的区别其实并不大。都是一种设计思想。主要就是MVC中Controller演变成MVVM中的viewModel。MVVM主要解决了MVC中大量的DOM操作使页面渲染性能降低,加载速度变慢,影响用户体验。当和Model频繁发生变化,开发者需要主动更新到View。MVVM:是ModelView
Wesley13 Wesley13
4年前
unity工程师面试知识点之MVC架构+观察者模式
所谓设计模式通俗点理解就是解决固定问题的套路。而说起观察者模式又不得不提起客户端框架设计中最常用的实现逻辑:MVC架构观察者模式。MVC架构中的M、V、C分别是model、view、control的缩写。model:模型,处理数据逻辑部分view:界面,处理数据显示部分control:控制器,模型和界面的沟通桥梁,负责从视图读取数据,控制用
全栈素食者
全栈素食者
Lv1
热爱是不会降温的。
文章
3
粉丝
0
获赞
0