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 相关文章推荐
JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解
Apr 29 Javascript
高亮显示web页表格行的javascript代码
Nov 19 Javascript
js生成随机数的方法实例
Oct 16 Javascript
JavaScript生成二维码图片小结
Dec 27 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
Jan 14 Javascript
jQuery通过ajax快速批量提交表单数据
Oct 25 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
Apr 18 Javascript
jQuery实现使用sort方法对json数据排序的方法
Apr 17 jQuery
element-ui table span-method(行合并)的实现代码
Dec 20 Javascript
Vue 组件修改根实例的数据的方法
Apr 02 Javascript
JS实现简单打字测试
Jun 24 Javascript
JavaScript原始值与包装对象的详细介绍
May 11 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下获取客户端ip地址的函数
2010/03/15 PHP
PHP程序员基本要求和必备技能
2014/05/09 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
利用php输出不同的心形图案
2016/04/22 PHP
php封装的smarty类完整实例
2016/10/19 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
JavaScript 里的类数组对象
2015/04/08 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
2016/07/22 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
JavaScript的事件机制详解
2017/01/17 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
jQuery实现手势解锁密码特效
2017/08/14 jQuery
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python实现周期性抓取网页内容的方法
2015/11/04 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
python小程序实现刷票功能详解
2019/07/17 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
2019/11/26 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
sort命令的作用和用法
2012/11/04 面试题
时尚休闲吧创业计划书
2014/01/25 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
邓小平理论心得体会
2014/09/09 职场文书
技术股东合作协议书
2014/12/02 职场文书
大学四年个人总结
2015/03/03 职场文书
2019交通安全宣传标语集锦!
2019/06/28 职场文书
HTML中的表单元素介绍
2022/02/28 HTML / CSS
python函数的两种嵌套方法使用
2022/04/02 Python