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 相关文章推荐
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
Dec 06 Javascript
JS仿flash上传头像效果实现代码
Jul 18 Javascript
js 三级关联菜单效果实例
Aug 13 Javascript
js动态设置鼠标事件示例代码
Oct 30 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
Jun 30 Javascript
JS实现禁止鼠标右键的功能
Oct 15 Javascript
vue路由嵌套的SPA实现步骤
Nov 06 Javascript
Vue 组件传值几种常用方法【总结】
May 28 Javascript
mui js控制开关状态、修改switch开关的值方法
Sep 03 Javascript
VUE 动态组件的应用案例分析
Dec 02 Javascript
vue实现div单选多选功能
Jul 16 Javascript
JavaScript常用工具函数库汇总
Sep 17 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
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
php析构函数的简单使用说明
2015/08/24 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
2016/03/25 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
Ant-design-vue Table组件customRow属性的使用说明
2020/10/28 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
深入解析Python中的lambda表达式的用法
2015/08/28 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
python中的句柄操作的方法示例
2019/06/20 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
全球最大的户外用品零售商之一:The House
2018/06/12 全球购物
好的自荐信包括什么内容
2013/11/07 职场文书
小学开学寄语
2014/01/19 职场文书
员工趣味活动方案
2014/08/27 职场文书
庆元旦演讲稿
2014/09/15 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python