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 函数使用说明
Apr 07 Javascript
javascript笔记 String类replace函数的一些事
Sep 22 Javascript
基于jQuery的倒计时实现代码
May 30 Javascript
基于jquery自己写tab滑动门(通用版)
Oct 30 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
May 06 Javascript
用js来获取上传的文件名纯粹是为了美化而用
Oct 23 Javascript
JS实现重新加载当前页面或者父页面的几种方法
Nov 30 Javascript
javascript滚轮事件基础实例讲解(37)
Feb 14 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
Apr 22 Javascript
Bootstrap Table使用整理(四)之工具栏
Jun 09 Javascript
JavaScript循环_动力节点Java学院整理
Jun 28 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
May 16 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
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
How do I change MySQL timezone?
2008/03/26 PHP
php 处理上百万条的数据库如何提高处理查询速度
2010/02/08 PHP
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
js 字符串操作函数
2009/07/25 Javascript
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
js选项卡的实现方法
2015/02/09 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
2015/09/24 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
2016/05/10 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
JS验证图片格式和大小并预览的简单实例
2016/10/11 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
纯javascript实现选择框的全选与反选功能
2019/04/08 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
调试Python程序代码的几种方法总结
2015/04/28 Python
Python实现PS图像明亮度调整效果示例
2018/01/23 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
Python3常见函数range()用法详解
2019/12/30 Python
python中os包的用法
2020/06/01 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
2014年新农村建设工作总结
2014/12/01 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS
vue+spring boot实现校验码功能
2021/05/27 Vue.js
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android
js 实现验证码输入框示例详解
2022/09/23 Javascript