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 相关文章推荐
载入进度条 效果
Jul 08 Javascript
来自chinaz的ajax获取评论代码
May 03 Javascript
JavaScript 计算图片加载数量的代码
Jan 01 Javascript
一些常用的JavaScript函数(json)附详细说明
May 25 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
Mar 25 Javascript
javascript实现图片自动和可控的轮播切换特效
Apr 13 Javascript
JavaScript中数据结构与算法(三):链表
Jun 19 Javascript
使用canvas进行图像编辑的实例
Aug 29 Javascript
Vue官网todoMVC示例代码
Jan 29 Javascript
ng-events类似ionic中Events的angular全局事件
Sep 05 Javascript
vue.js实现左边导航切换右边内容
Oct 21 Javascript
Vue文本模糊匹配功能如何实现
Jul 30 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表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
thinkPHP模板引擎用法示例
2016/12/08 PHP
启用OPCache提高PHP程序性能的方法
2019/03/21 PHP
jQuery中的height innerHeight outerHeight区别示例介绍
2014/06/15 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
2016/08/25 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
原生JS实现音乐播放器
2021/01/26 Javascript
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
Python中的startswith和endswith函数使用实例
2014/08/25 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
使用Python刷淘宝喵币(低阶入门版)
2019/10/30 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
python实现在线翻译
2020/06/18 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
总经理秘书工作职责
2013/12/26 职场文书
成品仓管员工作职责
2013/12/29 职场文书
网络书店创业计划书
2014/02/07 职场文书
销售人员工作自我评价
2014/09/21 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
民事撤诉申请书范本
2015/05/18 职场文书
关于环保的宣传稿
2015/07/23 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
Python3中PyQt5简单实现文件打开及保存
2021/06/10 Python