vue.js利用defineProperty实现数据的双向绑定
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>
实现效果:
2.兼容性
貌似es5的语法在IE9以下的浏览器不能兼容。所以vue只能兼容ie9以上的浏览器了。
可以使用es5的兼容库:es5-shim。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!
相关推荐
-
Vue.js双向绑定操作技巧(初级入门)
首先在页面引入vue.js以及其他需要用到的或者可能要用到的插件(这里我多引用了bootstrap和jquery) 引用的时候需要注意文件的路径,准备工作这样基本就完成了,下面正式开始入门. vue.js最重要的一个特点就是双向数据绑定也就是我们常说的MVVM:Model-View-ViewModel.我们要实现双向绑定首先当然要有"双向",这里vue.js为我们提供了View层和Model层.View层就是在HTML中的代码,Model层则是Javascript代码. 下面是一个最基
-
vue.js利用Object.defineProperty实现双向绑定
Object.defineProperty这个方法了不起啊,vue.js是通过它实现双向绑定的..而且Object.observe也被草案发起人撤回了..所以defineProperty更有必要了解一下了. 几行代码看他怎么用 var a= {} Object.defineProperty(a,"b",{ value:123 }) console.log(a.b);//123 很简单,它接受三个参数,而且都是必填的.. 传入参数 第一个参数:目标对象 第二个参数:需要定义的属性或方法的
-
Vue.js每天必学之数据双向绑定
Vue.js 的模板是基于 DOM 实现的.这意味着所有的 Vue.js 模板都是可解析的有效的 HTML,且通过一些特殊的特性做了增强.Vue 模板因而从根本上不同于基于字符串的模板,请记住这点. 插值 文本 数据绑定最基础的形式是文本插值,使用 "Mustache" 语法(双大括号): <span>Message: {{ msg }}</span> Mustache 标签会被相应数据对象的 msg 属性的值替换.每当这个属性变化时它也会更新. 你也可以只处理
-
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
数据的双向绑定(ES6写法) 效果: 没有改变 input 框里面的值时: 将input 框里面的值清空时: 重新给 input 框输入 豆豆 后页面中 span 里绑定{{testData.name}}的值随着 input 框值的变化而变化. 在Vue.js中可以使用v-model指令在表单元素上创建双向数据绑定.并且v-model指令只能用于:<input>.<select>.<textarea>这三种标签. <template> <div
-
深入理解vue.js双向绑定的实现原理
前言 大家都知道Vue.js最核心的功能有两个,一是响应式的数据绑定系统,二是组件系统.本文仅探究几乎所有Vue的开篇介绍都会提到的hello world双向绑定是怎样实现的.先讲涉及的知识点,再参考源码,用尽可能少的代码实现那个hello world开篇示例. 一.访问器属性 访问器属性是对象中的一种特殊属性,它不能直接在对象中设置,而必须通过defineProperty()方法单独定义. var obj = { }; // 为obj定义一个名为hello的访问器属性 Object.defin
-
Vue.js双向绑定实现原理详解
Vue.js最核心的功能有两个,一是响应式的数据绑定系统,二是组件系统.本文仅探究几乎所有Vue的开篇介绍都会提到的hello world双向绑定是怎样实现的.先讲涉及的知识点,再参考源码,用尽可能少的代码实现那个hello world开篇示例. 参考文章:http://www.jb51.net/article/100819.htm 一.访问器属性 访问器属性是对象中的一种特殊属性,它不能直接在对象中设置,而必须通过defineProperty()方法单独定义. var obj = { }; /
-
vue.js利用defineProperty实现数据的双向绑定
vue.js如何实现数据的双向绑定呢? 与angular不同. vue利用的是es5的defineproperty特性. 1.一个小例子 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <input type="tex
-
详解Vue.js之视图和数据的双向绑定(v-model)
1.使用v-model指令,使得视图和数据实现双向绑定.v-model主要用在表单的input输入框,完成视图和数据的双向绑定. 2.JavaScript代码 <script type="text/javascript" src="../js/vue-1.0.21.js"></script> <script type="text/javascript"> window.onload = function() {
-
使用Vue.js实现数据的双向绑定
目录 如何用Vue.js实现数据的双向绑定? 1. 理解双向绑定 2. 使用v-model指令 3. 使用自定义组件实现双向绑定 4. 数据劫持 5. 模板引擎 6.Object.defineProperty()详解 如何用Vue.js实现数据的双向绑定? 在Vue.js中,双向数据绑定是一项非常强大的功能,它能够使数据和视图之间保持同步,让开发者更加方便地操作数据.在本文中,我们将介绍如何用Vue.js实现数据的双向绑定. 1. 理解双向绑定 首先,我们需要了解双向绑定的原理.在Vue.js中
-
利用js实现Vue2.0中数据的双向绑定功能
Object.defineProperty了解 语法: Object.defineProperty(obj, prop, descriptor) obj 要定义属性的对象. prop 要定义或修改的属性的名称 descriptor 要定义或修改的属性描述符 obj和prop很好理解 比如我们定义一个变量为 const o = { name:'xbhog' } 其中obj指的就是o,prop指的就是o.name 下面我们主要看看descriptor descriptor 目标对象属性的一些特征
-
Angular JS数据的双向绑定详解及实例
Angular JS数据的双向绑定 接触AngularJS许了,时常问自己一些问题,如果是我实现它,会在哪些方面选择跟它相同的道路,哪些方面不同.为此,记录了一些思考,给自己回顾,也供他人参考. 初步大致有以下几个方面: 数据双向绑定 视图模型的继承关系 模块和依赖注入的设计 待定 数据的双向绑定 Angular实现了双向绑定机制.所谓的双向绑定,无非是从界面的操作能实时反映到数据,数据的变更能实时展现到界面. 一个最简单的示例就是这样: <div ng-controller="Count
-
Vue.js 利用v-for中的index值实现隔行变色
首先定义好样式,利用v-for中的index值,然后绑定样式来实现隔行变色效果. 以下为完整代码,很简单,但也是个技巧. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0&
-
Vue使用.sync 实现父子组件的双向绑定数据问题
1.前言 最近在vue 项目中有一个需求, 就是我需要根据不同的类型在页面中放不同的组件, 组件需要跟当前页面的数据进行双向绑定,如果都写在同一个页面 代码会显得比较多,毕竟我当前页面已经7-800行代码了 所以我需要把一些元素定义成组件 ,封装起来,所以就会遇到 数据的传值绑定问题 2.父组件 首先我们来看看官方文档 [ https://cn.vuejs.org/v2/guide/components.html#sync-修饰符 ] .sync 修饰符所提供的功能.当一个子组件改变了一个 pr
-
Vue2.0实现组件数据的双向绑定问题
通过上一节的学习,我们了解到了在Vue的组件中数据传递: prop 向下传递,事件向上传递 .意思是父组件通过 prop 给子组件下发数据,子组件通过事件给父组件发送消息.但Vue中, props 是单向数据绑定,虽然在Vue 1.0版本中,通过 .sync 能实现双向数据绑定.但 .sync 在几个版本中被移除,尽管在2.3版本重新引入 .sync 修饰符,可这次引入只是作为一个编译时的语法糖存在.如果直接使用 .sync 修饰符来做双向数据绑定,会报警告信息.那么我们如何在组件中实现双向数据
-
javascript用defineProperty实现简单的双向绑定方法
defineProperty Object提供的方法,用于给对象添加自定义属性具体用法如下: const obj = { _value: 1 }; Object.defineProperty(obj, 'value', { get: function() { console.log('get方法执行'); return this._value; }, set: function(a) { console.log('set方法执行'); this._value = a; } }) obj.valu
随机推荐
- 如何处理包含javascript语句时的间隔符?
- Extjs中通过Tree加载右侧TabPanel具体实现
- vue2.X组件学习心得(新手必看篇)
- Vue获取DOM元素样式和样式更改示例
- input点击后placeholder中的提示消息消失
- 详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)
- 屏蔽PHP默认设置中的Notice警告的方法
- Ajax实现文件下载
- IE9下Ajax无法刷新数据的缓存问题解决方法
- js onclick事件传参讲解
- js模拟QQ窗口的抖动效果
- JSP彩色验证码的实例代码
- Yii中表单用法实例详解
- php+mysql开源XNA 聚合程序发布 下载
- linux服务器下查看mysql的安装信息
- 基于jquery二维码生成插件qrcode
- 深入理解jquery的$.extend()、$.fn和$.fn.extend()
- textContent在Firefox下与innerText等效的属性
- JavaScript Event学习第五章 高级事件注册模型
- Android自定义SwipeRefreshLayout高仿微信朋友圈下拉刷新