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 相关文章推荐
textarea的value是html文件源代码,存成html文件的代码
Apr 20 Javascript
extJS中常用的4种Ajax异步提交方式
Mar 07 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
May 13 Javascript
通过正则表达式获取url中参数的简单实现
Jun 07 Javascript
完美解决JS文件页面加载时的阻塞问题
Dec 18 Javascript
基于JavaScript实现窗口拖动效果
Jan 18 Javascript
微信小程序之MaterialDesign--input组件详解
Feb 15 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 jQuery
谈谈vue中mixin的一点理解
Dec 12 Javascript
解决vue项目使用font-awesome,build后路径的问题
Sep 01 Javascript
Ajax请求时无法重定向的问题解决代码详解
Jun 21 Javascript
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
Mar 31 jQuery
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
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
PHP中SSO Cookie登录分析和实现
2015/11/06 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
prototype 学习笔记整理
2009/07/17 Javascript
JQuery读取XML文件数据并显示的实现代码
2009/12/16 Javascript
javascript options属性集合操作代码
2009/12/28 Javascript
跟我学习javascript的定时器
2015/11/19 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
2017/12/19 jQuery
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
详解vue使用vue-layer-mobile组件实现toast,loading效果
2018/08/31 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
vue中的ref和$refs的使用
2018/11/22 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
vue的keep-alive用法技巧
2019/08/15 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
Python列表(list)常用操作方法小结
2015/02/02 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
python实例化对象的具体方法
2020/06/17 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
成功的酒店创业计划书
2013/12/27 职场文书
淘宝店策划方案
2014/06/07 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS