详解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实现给图片加链接
Aug 15 Javascript
javascript权威指南 学习笔记之null和undefined
Sep 25 Javascript
JS代码优化技巧之通俗版(减少js体积)
Dec 23 Javascript
基于Bootstrap重置输入框内容按钮插件
May 12 Javascript
Javascript中的迭代、归并方法详解
Jun 14 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
Oct 28 Javascript
javascript输出AscII码扩展集中的字符方法
Dec 26 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
Nov 14 Javascript
JavaScript实现获取select下拉框中第一个值的方法
Feb 06 Javascript
JS实现的JSON数组去重算法示例
Apr 11 Javascript
React 组件渲染和更新的实现代码示例
Feb 21 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
Nov 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中的Session和Cookie
2013/06/21 PHP
php $_SERVER windows系统与linux系统下的区别说明
2014/02/14 PHP
php将html转为图片的实现方法
2017/05/19 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
jquery验证表单中的单选与多选实例
2013/08/18 Javascript
总结十个Angular.js由浅入深的面试问题
2016/08/26 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
详解Node.js开发中的express-session
2017/05/19 Javascript
vue组件 keep-alive 和 transition 使用详解
2019/10/11 Javascript
JS实现省市县三级下拉联动
2020/04/10 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
用tensorflow搭建CNN的方法
2018/03/05 Python
Python实现的端口扫描功能示例
2018/04/08 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
2019/06/13 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
详解python中的闭包
2020/09/07 Python
尤妮佳moony海外旗舰店:日本殿堂级纸尿裤品牌
2018/02/23 全球购物
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
毕业生怎样写好自荐信
2013/11/11 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
办公室日常管理制度
2015/08/04 职场文书
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技