详解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 同时在IE和FireFox获取KeyCode的代码
Feb 07 Javascript
JS 跳转页面延迟2种方法
Mar 29 Javascript
20行代码实现的一个CSS覆盖率测试脚本
Jul 07 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
Jan 15 Javascript
基于javascript实现tab选项卡切换特效调试笔记
Mar 30 Javascript
分享10个优化代码的CSS和JavaScript工具
May 11 Javascript
Javascript 判断两个IP是否在同一网段实例代码
Nov 28 Javascript
Angular.JS去掉访问路径URL中的#号详解
Mar 30 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
Aug 10 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
Dec 04 Javascript
vue select组件的使用与禁用实现代码
Apr 10 Javascript
Angular 封装并发布组件的方法示例
Apr 19 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数组函数
2008/08/18 PHP
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
PHP如何将log信息写入服务器中的log文件
2015/07/29 PHP
php排序算法实例分析
2016/10/17 PHP
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
js loading加载效果实现代码
2009/11/24 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
菜鸟javascript基础整理1
2010/12/06 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
浅谈node.js 命令行工具(cli)
2018/05/10 Javascript
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
python随机生成指定长度密码的方法
2015/04/04 Python
python之PyMongo使用总结
2017/05/26 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
Python模块的加载讲解
2019/01/15 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
Pytorch转tflite方式
2020/05/25 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
2020/06/17 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
Python3爬虫关于代理池的维护详解
2020/07/30 Python
斯凯奇美国官网:SKECHERS美国
2016/08/20 全球购物
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
马来西亚最大的在线隐形眼镜商店:MrLens
2019/03/27 全球购物
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
旅游项目合作意向书
2015/05/08 职场文书
SqlServer: 如何更改表的文件组?(进而改变存储位置)
2021/04/05 SQL Server