VUE实现表单元素双向绑定(总结)


Posted in Javascript onAugust 08, 2017

本文介绍了VUE实现表单元素双向绑定(总结) ,分享给大家,具体如下:

checkbox最基本用法:

<input type="checkbox" v-model="inputdata" checked/>
<input type="checkbox" v-model="inputdata"/>
<input type="checkbox" v-model="inputdata"/>
new Vue({
  el:".......",
  data:{
    inputdata:false //逻辑类型
  }
ready:function(){


console.log(this.inputdata)//true

}
})

规则1:如果v-model绑定的变量类型为boolean,若input被选中,this.inputdata为true,否则this.inputdata为false。

inputdata变量初始设置为false,但是在页面进行编译时,因为第一个input为选中状态,所以更新inputdata为true,那么渲染结束之后三个input均为选中状态,且三个input状态同步。

<input type="checkbox" value="a" v-model="inputdata" checked/>
<input type="checkbox" value="b" v-model="inputdata"/>
<input type="checkbox" value="c" v-model=""inputdata" checked/>
new Vue({ 
el:".......", 

data:{ 


inputdata:[]//数组类型

} 


ready:function(){ 




console.log(this.inputdata)//[a,c]

} 
})

规则2:如果v-model绑定的变量类型为数组,那么绑定该变量的元素若被选中,把该元素的value值添加进数组,若不被选中,那么把该元素的value从数组中去除。

所以在v-model绑定的变量类型是数组的情况下,务必设置绑定该变量的每个元素的value值,且value值不要相等。见上例。

 radio基本用法

<input type="radio" value="a" v-model="inputdata" />
<input type="radio" value="b" v-model="inputdata" checked/>
<input type="radio" value="c" v-model="inputdata" checked/>

new Vue({
  el:".......",
  data:{
    inputdata:"a"
  }
ready:function(){


console.log(this.inputdata)// c

}
})

规则:v-model绑定的变量值如果等于input元素其中一个value值,那么该表单元素会被选中,如果不等于任何input的value值,所有相关元素不选中。同时如果选中某个input元素,那么该元素的value值就会被赋给该变量,页面重新渲染。

如上,初始this.inputdata为"a",在编译到第二个input时,因为属性为checked表示选中,该元素value为"b",所以this.inputdata值为"b",然后编译到第三个input时,同样存在checked,所以this.inputdata为"c"。编译结束后,this.inputdata值为"c",页面最终渲染效果为第三个被选中,前两个未被选中。

select基本用法

<select v-model="selected">
 <option>A</option>
 <option selected>B</option>
 <option>C</option>
</select>
<br>
<span>Selected: {{ selected | json }}</span>

new Vue({
el:"....",

data:{


selelcted:"A"

}
})

规则:v-model绑定的变量值如果等于option元素其中一个value值,那么该元素会被选中。同时如果选中某个option元素,那么该元素的value值就会被赋给该变量。

如上,初始this.selected为"A",在编译到第二个option时,因为属性为selected表示选中,该元素text值为"B"(如果option有value值,会优先value值),所以this.selected值为"B"。编译结束后,this.slected值为"B",页面最终渲染效果为第二个被选中。如果是可多选select下拉框,规则基本同checkbox的规则2

属性基本用法

lazy

在默认情况下,v-model 在input 事件中同步输入框值与数据,可以添加一个特性lazy,input值发生改变时,不会同步到绑定的变量

<input type="text" v-model="msg" lazy>//input值发生改变,msg不变

number

如果想自动将用户的输入转为 Number 类型(如果原值的转换结果为 NaN 则返回原值),可以添加一个特性 number:

<input v-model="age" number>//默认输入框内的值为字符串,添加number,可以将输入值转换为数字在同步到age

debounce

设置一个最小的延时,在每次敲击之后延时同步输入框的值与数据。如果每次更新都要进行高耗操作(例如在输入提示中 Ajax 请求),它较为有用.

<input v-model="msg" debounce="500">//输入内容0.5秒后同步到msg

vm.$watch({
'msg':function(val,oldval){





}
})

注意 debounce 参数不会延迟 input 事件:它延迟“写入”底层数据(所以不适合ajax请求事件)。因此在使用debounce 时应当用 vm.$watch() 响应数据的变化。

若想延迟 DOM 事件,应当使用debounce过滤器。

debounce过滤器

<input @keyup="onKeyup | debounce 500">//只要操作键盘间隔小于0.5秒,就不会发生onKeyup事件。

包装处理器,让它延迟执行 x ms, 默认延迟 300ms。包装后的处理器在调用之后至少将延迟 x ms, 如果在延迟结束前再次调用,延迟时长重置为 x ms。

用此过滤器非常适合做ajax请求

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript一个无懈可击的实例化XMLHttpRequest的方法
Oct 13 Javascript
event.currentTarget与event.target的区别介绍
Dec 31 Javascript
Js注册协议倒计时的小例子
Jun 24 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
Nov 22 Javascript
js实现图片无缝滚动特效
Mar 19 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
May 10 Javascript
vue 插值 v-once,v-text, v-html详解
Jan 19 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
Sep 27 Javascript
laydate如何根据开始时间或者结束时间限制范围
Nov 15 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
Aug 02 jQuery
three.js利用gpu选取物体并计算交点位置的方法示例
Nov 25 Javascript
JavaScript实现雪花飘落效果
Dec 27 Javascript
ES6模块化的import和export用法方法总结
Aug 08 #Javascript
Vue项目中quill-editor带样式编辑器的使用方法
Aug 08 #Javascript
webpack 2.x配置reactjs基本开发环境详解
Aug 08 #Javascript
vue-quill-editor实现图片上传功能
Aug 08 #Javascript
vue.js评论发布信息可插入QQ表情功能
Aug 08 #Javascript
vuejs使用FormData实现ajax上传图片文件
Aug 08 #Javascript
基于Vue实现支持按周切换的日历
Sep 24 #Javascript
You might like
Sony CFR 320 修复改造
2020/03/14 无线电
Apache2 httpd.conf 中文版
2006/11/17 PHP
php中截取字符串支持utf-8
2007/01/18 PHP
php 多关键字 高亮显示实现代码
2012/04/23 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
php图片水印添加、压缩、剪切的封装类实现
2020/04/18 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
PHP使用Mysqli类库实现完美分页效果的方法
2016/04/07 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
2016/10/25 PHP
javascript 树控件 比较好用
2009/06/11 Javascript
JavaScript 函数调用规则
2009/09/14 Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
2019/02/21 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
[14:00]DOTA2国际邀请赛史上最长大战 赛后专访B神
2013/08/10 DOTA
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
python调用cmd复制文件代码分享
2013/12/27 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
python各种语言间时间的转化实现代码
2016/03/23 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
html5 兼容IE6结构的实现代码
2012/05/14 HTML / CSS
导购员的岗位职责
2014/02/08 职场文书
材料员岗位职责
2014/03/13 职场文书
护士求职自荐信范文
2014/03/19 职场文书
技术比武方案
2014/05/19 职场文书
工地安全标语
2014/06/07 职场文书
关爱残疾人标语
2014/06/25 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
助学金感谢信
2015/01/20 职场文书