最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

vue响应式更新机制及不使用框架实现简单的数据双向绑定问题

来源:动视网 责编:小采 时间:2020-11-27 21:54:21
文档

vue响应式更新机制及不使用框架实现简单的数据双向绑定问题

vue响应式更新机制及不使用框架实现简单的数据双向绑定问题:最近看到有些人说vue是双向数据绑定的,有些人说vue是单向数据流的,我认为这两种说法都是错误的,vue是一款具有响应式更新机制的框架,既可以实现单向数据流也可以实现数据的双向绑定。 2 单向数据流与数据双向绑定 单向数据流是指model中的数据发生改变时引
推荐度:
导读vue响应式更新机制及不使用框架实现简单的数据双向绑定问题:最近看到有些人说vue是双向数据绑定的,有些人说vue是单向数据流的,我认为这两种说法都是错误的,vue是一款具有响应式更新机制的框架,既可以实现单向数据流也可以实现数据的双向绑定。 2 单向数据流与数据双向绑定 单向数据流是指model中的数据发生改变时引


举例:

//定义一个对象并监听他的text属性的存值操作与取值操作
let data={};
Object.defineProperty(data,'text',{
 get() {
 console.log('取值操作');
 },
 set(newVal) {
 console.log('存值操作');
 }
});
console.log('data');
===>
输出: ===>{} ===>取值操作 data.text='文本输入框'; ===>输出 ===>存值操作

有了Object.defineProperty()这个API就可以监听model中数据的改变并在数据改变的时候修改视图达到单向数据流的效果。

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

下面实现一个简易的数据双向绑定,目标是在修改view可以使model中的变量发生改变,修改model可以使视图发生改变。

//html
<div id="app">
 <input type="text" id="input">
</div>
//js
let input = document.querySelector('#input');
//定义model
let data={
 text:''
};
//监听model中text的变化,首先实现数据单向流
Object.defineProperty(data,text,{
 get() {
 
 },
 //text发生改变的时候,修改input元素的value值 
 set(newVal) {
 input.value=newVal;
 }
});
//监听input元素的改变并修改model的值,实现数据双向绑定
input.addEventLisener('input',event=> {
 data.text=event.target.value;
});

至此就实现了简易的数据双向绑定,可以在控制台中修改data.text的值来查看视图是否发生改变,修改input元素的值在控制台中打印data.text查看model是否发生改变。

总结

以上所述是小编给大家介绍的vue响应式更新机制及不使用框架实现简单的数据双向绑定问题 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

文档

vue响应式更新机制及不使用框架实现简单的数据双向绑定问题

vue响应式更新机制及不使用框架实现简单的数据双向绑定问题:最近看到有些人说vue是双向数据绑定的,有些人说vue是单向数据流的,我认为这两种说法都是错误的,vue是一款具有响应式更新机制的框架,既可以实现单向数据流也可以实现数据的双向绑定。 2 单向数据流与数据双向绑定 单向数据流是指model中的数据发生改变时引
推荐度:
标签: 数据 VUE 实现
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top