首页 > 编程源码 > vue 数据双向绑定

vue 数据双向绑定

楼主:安然 [3级] · 2019-11-20 ·  浏览597 · 编程源码 · ID:

Vue数据双向绑定

1.表现

当数据发生变化的时候,前端视图也发生变化。

当前端视图变化时,数据也会跟着变化。

2.模拟双向绑定的实现

1 视图层到数据层的实现

以 input 元素为例,实现视图层到数据层单向绑定,要实现首先要监听视图层是否发生变化。input 标签可以用 oninput 事件实现。

从上面的例子可以看到,只要每次输入框输入内容的时候,与输入框绑定的数据 ‘inputValue’ 都会改变,实现了视图层到数据层的绑定。

2 数据层到视图层的绑定。

因为数据层的数据是保存在对象里面的,实现数据层到视图层的绑定我们要用到对对象单个属性应用的隐藏函数 setter

对对象的属性赋值,都会调用该属性的 set() , 所以只要在 set() 函数里面对绑定在视图层上的值更新,就能实现数据层到视图层的绑定。

3. Vue双向绑定原理

通过模拟数据双向绑定的例子,我们可以看出,只要把这两种方式结合起来,就能实现 Vue 中的数据双向绑定。

原理总结

实现双向绑定,要设置监听器,监听数据的变化(如例子的 oninput , 调用set()的时候 )。

绑定数据更新函数,监听到数据变化之后,调用绑定数据更新函数更新数据,更新视图。

引用网上的话:

Vue是通过数据劫持以及结合发布者-订阅者来实现的,数据劫持是利用ES5的Object.defineProperty(obj, key, val)来劫持各个属性的的setter以及getter,在数据变动时发布消息给订阅者,从而触发相应的回调来更新视图。

- 版权声明 - 1、本帖所有言论和图片等纯属网友个人意见,与流星社区立场无关;
2、其他单位或个人使用、转载或引用本帖时必须同时征得该帖子作者安然流星社区的同意;
3、备注原文地址:https://bbs.liuxingw.com/t/17933.html,可忽略第2条;
4、帖子作者需承担一切因本文发表而直接或间接导致的相关责任;
5、如本帖内容或部分内容转载自其它媒体,这并不代表本站赞同其观点和对其真实性负责;
6、如本帖若为资源类,将仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您安装或使用的设备中彻底删除上述内容;
7、如果您喜欢该程序,请支持正版软件,购买注册,可以得到更好的正版服务;
8、如本帖侵犯到任何版权或违法问题,请立即邮件告知我们,我们将及时予以处理。
7条回复 |  最后回复于2019-11-20

[]

我去...这是vs里面的?
发布于2019-11-20

回复列表

  • 内容加载中...

说点什么...

安然 [3级]

不知道值班还可以玩,真好
发布于2019-11-20

回复列表

  • 内容加载中...

说点什么...

安然 [3级]

你回复怎么怎么少了
发布于2019-11-20

回复列表

  • 内容加载中...

说点什么...

[]

三万我觉得不少了
发布于2019-11-20

回复列表

  • 内容加载中...

说点什么...

安然 [3级]

之前好像十万
发布于2019-11-20

回复列表

  • 内容加载中...

说点什么...

[]

没有我其实不怎么会水
发布于2019-11-20

回复列表

  • 内容加载中...

说点什么...

安然 [3级]

之前有
发布于2019-11-20

回复列表

  • 内容加载中...

说点什么...
登录注册 后才可进行评论
签到
38人签到
已签0天
  • 46637帖子
  • 1936934热点量
  • 185039火热值