详解vue表单——小白速看


Posted in Javascript onApril 08, 2018

一、基本用法

你可以用 v-model 指令在表单 <input> 及 <textarea> 元素上创建双向数据绑定。

但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

v-model 会忽略所有表单元素的 value、checked、selected 特性的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的 data 选项中声明初始值。

一组代码,看完text、textarea、radio、checkbox、select的基本用法:

<div id="app7">
  <input type="text" v-model="message"><label>{{message}}</label></br>
  <textarea v-model="message1"></textarea><label>{{message1}}</label></br>
  <!--单选按钮在单独使用时,不需要v-model,直接使用v-bind 绑定一个布尔类型的值,为真时选中,为否时不选-->
  <input type="radio" :checked="picked"><label>单选按钮</label></br>
  <!--如果是组合使用来实现互斥选择的效果,就需要v-model 配合value来使用:-->
  <input type="radio" v-model="sex" value="boy"><label>男</label>
  <input type="radio" v-model="sex" value="girl"><label>女</label></br>
  <!--复选框使用数组类型的数据匹配-->
  <input type="checkbox" v-model="hobby" value="跑步"><label>跑步</label>
  <input type="checkbox" v-model="hobby" value="爬山"><label>爬山</label>
  <input type="checkbox" v-model="hobby" value="滑雪"><label>滑雪</label></br>
  <!--单选时的选择框,多选时加multiple属性就可以了-->
  <!--但我们一般都不用原生的这种下拉框,不美观,扩展功能也不好,一般会用插件或自己封装一个-->
  <select v-model="select">
   <option disabled value="">请选择</option>
   <option>html</option>
   <option value="js">javascript</option>
   <option>css</option>
  </select>
  <!--用 v-for 渲染的动态选项-->
  <select v-model="selected">
   <option v-for="option in options" :value="option.value">
    {{option.text}}
   </option>
  </select>
 </div>

var app7 = new Vue({
 el: '#app7',
 data:{
  message: '单行文本',
  message1: '多行文本',
  picked: true,
  sex: 'boy',
  hobby: ['爬山','滑雪'],
  select: 'css',
  selected: 'A',
  options: [
   { text: 'One', value: 'A' },
   { text: 'Two', value: 'B' },
   { text: 'Three', value: 'C' }
  ]
 }
});

二、值绑定

单选按钮、复选框和选择列表在单独使用或单选的模式下, v-model 绑定的值是一个静态字符串或布尔值, 但在业务中,有时需要绑定一个动态的数据, 这时可以用v-bind 来实现。

一组代码,看完表单常用radio、checkbox、select的值绑定:

<div id="app8">
  <!--单选按钮,利用value动态绑定,在选中时,app.picked === app.value, 值都是boy-->
  <input type="radio" v-model="picked" :value="value">
  <label>单选按钮</label>
  <p>{{picked}}</p>
  <p>{{value}}</p>

  <!--复选框,利用true-value与false-value动态绑定,勾选时,app.toggle == app.value1; 未勾选时,app.toggle == app.value2-->
  <input type="checkbox" v-model="toggle" :true-value="value1" :false-value="value2">
  <label>复选框</label>
  <p>{{toggle}}</p>
  <p>{{value1}}</p>
  <p>{{value2}}</p>

  <!--选择列表,当选中时,app.selected 是一个Object ,所以app.selected.number == 123-->
  <select v-model="selected">
   <option :value="{number:123}">123</option>
  </select>
  {{selected.number}}
 </div>

var app8 = new Vue({
 el: '#app8',
 data:{
  picked: false,
  value: 'boy',
  toggle: false,
  value1: 'a',
  value2: 'b',
  selected: ''
 }
});

三、修饰符

 与事件的修饰符类似, v-model 也有修饰符,用于控制数据同步的时机。

一组代码,看完常用修饰符lazy、number、trim

<div id="app9">
  <!-- .lazy:
  在输入框中, v-model 默认是在input 事件中同步输入框的数据(除了提示中介绍的中文输入法情况外),
  使用修饰符.lazy 会转变为在change 事件中同步,这时,message 并不是实时改变的,而是在失焦或按回车时才更新。-->
  <input type="text" v-model.lazy="message">
  <p>{{message}}</p>
  <!--.number:
  使用修饰符.number 可以将输入转换为Number 类型,否则虽然你输入的是数字,但它的类型其实是String ,比如在数字输入框时会比较有用-->
  <input type="text" v-model.number="number">
  <p>{{typeof number}}</p>
  <!-- .trim:
  修饰符.trim 可以自动过滤输入的首尾空格-->
  <input type="text" v-model="text">
  <p>{{text}}</p>
 </div>
var app9 = new Vue({
 el: '#app9',
 data:{
  message: '',
  number: '',
  text: ''
 }
});

总结

以上所述是小编给大家介绍的vue表单详解——小白速看,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript操作referer详细解析
Mar 10 Javascript
向JavaScript的数组中添加元素的方法小结
Oct 24 Javascript
Jquery中request和request.form和request.querystring的区别
Nov 26 Javascript
继续学习javascript闭包
Dec 03 Javascript
解决js函数闭包内存泄露问题的办法
Jan 25 Javascript
在JavaScript中使用JSON数据
Feb 15 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
Feb 26 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
Dec 29 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
Mar 15 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
Apr 25 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
May 16 Javascript
详解JSON.stringify()的5个秘密特性
May 26 Javascript
JS简单实现动态添加HTML标记的方法示例
Apr 08 #Javascript
React Router v4 入坑指南(小结)
Apr 08 #Javascript
Angular 5.x 学习笔记之Router(路由)应用
Apr 08 #Javascript
vue2.0 资源文件assets和static的区别详解
Apr 08 #Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
Apr 08 #Javascript
vuex 项目结构目录及一些简单配置介绍
Apr 08 #Javascript
JS求Number类型数组中最大元素方法
Apr 08 #Javascript
You might like
php实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
js回调函数仿360开机
2019/12/26 Javascript
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
python中redis的安装和使用
2016/12/04 Python
Python2.7编程中SQLite3基本操作方法示例
2017/08/09 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
详解Python中的测试工具
2019/06/09 Python
python实现websocket的客户端压力测试
2019/06/25 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
Pytorch Tensor的索引与切片例子
2019/08/18 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
HTML5单选框、复选框、下拉菜单、文本域的实现代码
2020/12/01 HTML / CSS
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
工厂厂长岗位职责
2013/11/08 职场文书
美容师的职业规划书
2013/12/27 职场文书
本科毕业生求职自荐信
2014/02/03 职场文书
春节联欢会主持词
2014/03/24 职场文书
美德少年事迹材料500字
2014/08/19 职场文书
2015年班组长工作总结
2015/04/10 职场文书
中学总务处工作总结
2015/08/12 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书
Mysql 性能监控及调优
2021/04/06 MySQL
基于Redis延迟队列的实现代码
2021/05/13 Redis
Node.js实现断点续传
2021/06/23 Javascript
SpringBoot系列之MongoDB Aggregations用法详解
2022/02/12 MongoDB