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 相关文章推荐
AngularJS iframe跨域打开内容时报错误的解决办法
Jan 26 Javascript
DeviceOne 让你一见钟情的App快速开发平台
Feb 17 Javascript
Node.js操作mysql数据库增删改查
Mar 30 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
May 31 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
Nov 12 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
Nov 28 Javascript
jquery仿微信聊天界面
May 06 jQuery
jQuery遍历节点方法汇总(推荐)
May 13 jQuery
Angular4学习笔记之准备和环境搭建项目
Aug 01 Javascript
JavaScript实现留言板案例
Mar 17 Javascript
Vue组件间数据传递的方式(3种)
Jul 13 Javascript
js判断两个数组相等的5种方法
May 06 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文件怎么打开 如何执行php文件
2011/12/21 PHP
PHP自动生成后台导航网址的最佳方法
2013/08/27 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
Laravel使用消息队列需要注意的一些问题
2017/12/13 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
JavaScript面向对象之Prototypes和继承
2012/07/12 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
Ubuntu系统下Angularjs开发环境安装
2016/09/01 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
微信小程序实现点击导航条切换页面
2020/11/19 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
Python 3中的yield from语法详解
2017/01/18 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
python 常用的基础函数
2018/07/10 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
python使用配置文件过程详解
2019/12/28 Python
python2.7使用scapy发送syn实例
2020/05/05 Python
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
药物学专业学生的自我评价
2013/10/27 职场文书
员工考核管理制度
2014/02/02 职场文书
高一数学教学反思
2014/02/07 职场文书
学习方法演讲稿
2014/05/10 职场文书
安全生产标语大全
2014/10/06 职场文书
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python