vue.js利用defineProperty实现数据的双向绑定


Posted in Javascript onApril 28, 2017

vue.js如何实现数据的双向绑定呢?

与angular不同。

vue利用的是es5的defineproperty特性。

1.一个小例子

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
<input type="text" id="demo">
<p id="display"></p>
<script>
  var obj={};
  var bind=[];
  //触发obj对象set和get方法的时候,趁机来输出或修改bind数组的内容
  Object.defineProperty(obj,'s',{
    set:function(val){
      bind['s']=val;
    },
    get:function(){
      return bind['s'];
    }
  })
  var demo=document.querySelector('#demo');
  var display=document.querySelector('#display');
  //#demo的value值与bind['s']绑定,#display的innerHTML也与bind['s']绑定。
  demo.onkeyup=function(){
    obj['s']=demo.value;//触发了obj的set方法,等于#demo的value值赋值给bind['s']。
    display.innerHTML=bind['s'];
  }
</script>
</body>
</html>

实现效果:

vue.js利用defineProperty实现数据的双向绑定

2.兼容性

貌似es5的语法在IE9以下的浏览器不能兼容。所以vue只能兼容ie9以上的浏览器了。

可以使用es5的兼容库:es5-shim。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
javascript 表单规则集合对象
Jul 21 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
Aug 03 Javascript
ExtJS4给Combobox设置列表中的默认值示例
May 02 Javascript
javascript弹出窗口实现代码
Nov 12 Javascript
JavaScript的设计模式经典之代理模式
Feb 24 Javascript
js中字符型和数值型数字的互相转化方法(必看)
Apr 25 Javascript
vue+webpack实现异步组件加载的方法
Feb 03 Javascript
详解Vue单元测试case写法
May 24 Javascript
详解在vue-test-utils中mock全局对象
Nov 07 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
Sep 14 Javascript
在elementui中Notification组件添加点击事件实例
Nov 11 Javascript
Element-ui upload上传文件限制的解决方法
Jan 22 Javascript
node.js+jQuery实现用户登录注册AJAX交互
Apr 28 #jQuery
Javascript实现数组中的元素上下移动
Apr 28 #Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
Apr 28 #jQuery
JS简单判断滚动条的滚动方向实现方法
Apr 28 #Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
Apr 28 #Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
Apr 28 #Javascript
jquery实现图片上传前本地预览
Apr 28 #jQuery
You might like
ADODB类使用
2006/11/25 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
php实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
Javascript 布尔型分析
2008/12/22 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
js实现多图左右切换功能
2016/08/04 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
Angular2入门--架构总览
2017/03/29 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
解决python写的windows服务不能启动的问题
2014/04/15 Python
Python中几种操作字符串的方法的介绍
2015/04/09 Python
Django实现celery定时任务过程解析
2020/04/21 Python
利用python进行文件操作
2020/12/04 Python
python asyncio 协程库的使用
2021/01/21 Python
anaconda升级sklearn版本的实现方法
2021/02/22 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
应届生的求职推荐信范文
2013/11/30 职场文书
技能比武方案
2014/05/21 职场文书
经济管理专业求职信
2014/06/09 职场文书
酒店端午节活动方案
2014/08/26 职场文书
费用申请报告范文
2015/05/15 职场文书
医者仁心观后感
2015/06/17 职场文书
小学英语新课改心得体会
2016/01/22 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers