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 相关文章推荐
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
Oct 12 Javascript
JavaScript实现给按钮加上双重动作的方法
Aug 14 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
Aug 21 Javascript
带有定位当前位置的百度地图前端web api实例代码
Jun 21 Javascript
bootstrap modal弹出框的垂直居中
Dec 14 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
Dec 22 Javascript
详解从买域名到使用pm2部署node.js项目全过程
Mar 07 Javascript
谈谈IntersectionObserver懒加载的具体使用
Oct 15 Javascript
vue遍历对象中的数组取值示例
Nov 07 Javascript
Vue+ElementUI table实现表格分页
Dec 14 Javascript
JS实现拖动模糊框特效
Aug 25 Javascript
JS轻量级函数式编程实现XDM二
Jun 16 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
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
jquery实现通用的内容渐显Tab选项卡效果
2015/09/07 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
2018/10/30 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
python正则表达式match和search用法实例
2015/03/26 Python
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
Python3多线程基础知识点
2019/02/19 Python
创建Django项目图文实例详解
2019/06/06 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
CSS3 简写animation
2012/05/10 HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
介绍一下SQL Server的全文索引
2013/08/15 面试题
质量工程师岗位职责
2013/11/16 职场文书
木工主管岗位职责
2013/12/08 职场文书
档案室主任岗位职责
2014/02/12 职场文书
歌颂祖国演讲稿
2014/05/04 职场文书
安全生产月标语
2014/10/07 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
演讲稿:​快乐,从不抱怨开始!
2019/04/02 职场文书
Redis分布式锁Redlock的实现
2021/08/07 Redis