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 最常用的10个自定义函数[推荐]
Dec 26 Javascript
基于jquery实现图片广告轮换效果代码
Jul 07 Javascript
javascript文件中引用依赖的js文件的方法
Mar 17 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
Aug 21 Javascript
JS表格组件神器bootstrap table详解(强化版)
May 26 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
Dec 17 Javascript
JavaScript中 this 指向问题深度解析
Feb 21 Javascript
Vue.js 中的 $watch使用方法
May 25 Javascript
node前端模板引擎Jade之标签的基本写法
May 11 Javascript
JS实现图片旋转动画效果封装与使用示例
Jul 09 Javascript
iview同时验证多个表单问题总结
Sep 29 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
May 27 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 class中public,private,protected的区别以及实例分析
2013/06/18 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
表单内同名元素的控制
2006/11/22 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
详解JavaScript中的every()方法
2015/06/08 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
讲解Python中fileno()方法的使用
2015/05/24 Python
python动态参数用法实例分析
2015/05/25 Python
在Django的模板中使用认证数据的方法
2015/07/23 Python
python中安装模块包版本冲突问题的解决
2017/05/02 Python
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
python处理写入数据代码讲解
2020/10/22 Python
修理厂厂长岗位职责
2014/01/30 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
中学生旷课检讨书模板
2014/10/08 职场文书
政风行风整改方案
2014/10/25 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
SQLServer中exists和except用法介绍
2021/12/04 SQL Server