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 相关文章推荐
JS 实现导航栏悬停效果
Sep 23 Javascript
jquery遍历checkbox的注意事项说明
Feb 21 Javascript
jQuery使用andSelf()来包含之前的选择集
May 19 Javascript
JS 获取鼠标左右键的键值方法
Oct 11 Javascript
jQuery插件实现大图全屏图片相册
Mar 14 Javascript
jquery实现的代替传统checkbox样式插件
Jun 19 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
Nov 02 Javascript
图片旋转、鼠标滚轮缩放、镜像、切换图片js代码
Dec 13 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
Apr 01 Javascript
使用Vue实现调用接口加载页面初始数据
Oct 28 Javascript
vue props对象validator自定义函数实例
Nov 13 Javascript
toString.call()通用的判断数据类型方法示例
Aug 28 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
php auth_http类库进行身份效验
2009/03/19 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
dedecms集成财付通支付接口
2014/12/28 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
javascript实现颜色渐变的方法
2013/10/30 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
js的回调函数详解
2015/01/05 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
jQuery实现的进度条效果
2015/07/15 Javascript
Javascript实现单例模式
2016/01/24 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
node使用request请求的方法
2019/12/20 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
简单上手Python中装饰器的使用
2015/07/12 Python
让python 3支持mysqldb的解决方法
2017/02/14 Python
python利用Guetzli批量压缩图片
2017/03/23 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
2019/08/12 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
.NET笔试题(20个问题)
2016/02/02 面试题
函授本科自我鉴定
2014/02/04 职场文书
施工安全生产承诺书
2014/05/23 职场文书
感恩小明星事迹材料
2014/05/23 职场文书
优秀教师先进材料
2014/12/16 职场文书
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电
MySQL利用UNION连接2个查询排序失效详解
2021/11/20 MySQL