详解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 相关文章推荐
动态创建的表格单元格中的事件实现代码
Dec 30 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
Oct 29 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
Jan 06 Javascript
Backbone.js的Hello World程序实例
Jun 19 Javascript
javascript数组去重的六种方法汇总
Aug 16 Javascript
谷歌Chrome浏览器扩展程序开发小记
Jan 06 Javascript
javascript实现瀑布流动态加载图片原理
Aug 12 Javascript
Node.Js生成比特币地址代码解析
Apr 21 Javascript
微信小程序实现顶部导航特效
Jan 28 Javascript
基于element-ui封装表单金额输入框的方法示例
Jan 06 Javascript
js实现有趣的倒计时效果
Jan 19 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
Mar 02 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
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
执行iframe中的javascript方法
2008/10/07 Javascript
javascript Select标记中options操作方法集合
2008/10/22 Javascript
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
2015/08/27 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
2017/07/18 Javascript
JS一次前端面试经历记录
2020/03/19 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
2020/03/23 Javascript
python基础知识小结之集合
2015/11/25 Python
python数据预处理之将类别数据转换为数值的方法
2017/07/05 Python
Python 多线程的实例详解
2017/09/07 Python
python中scikit-learn机器代码实例
2018/08/05 Python
浅谈python之新式类
2018/08/12 Python
python3.7.0的安装步骤
2018/08/27 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
python二元表达式用法
2019/12/04 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
python 制作python包,封装成可用模块教程
2020/07/13 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
CSS3 毛玻璃效果
2019/08/14 HTML / CSS
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
节省高达65%的城市景点费用:Go City
2019/07/06 全球购物
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
中学教师暑期培训方案
2014/08/27 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
教师群众路线心得体会
2014/11/04 职场文书