详解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 23 Javascript
javascript题目,重写函数让其无限相加
Feb 15 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
Jul 24 Javascript
JS 获取滚动条高度示例代码
Oct 24 Javascript
各种常用的JS函数整理
Oct 25 Javascript
Javascript函数式编程语言
Oct 11 Javascript
关于原生js中bind函数的简单实现
Aug 10 Javascript
BootStrap组件之进度条的基本用法
Jan 19 Javascript
Canvas放置反弹效果随机图形(实例)
Aug 17 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
Mar 08 Javascript
JavaScript 点击触发复制功能实例详解
Nov 02 Javascript
简单了解node npm cnpm的具体使用方法
Feb 27 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二进制流 逐bit的低位在前算法(详解)
2013/06/13 PHP
PHP实现加密的几种方式介绍
2015/02/22 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
php源码的安装方法和实例
2019/09/26 PHP
Laravel 在views中加载公共页面的实现代码
2019/10/22 PHP
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
jQuery实现下滑菜单导航效果代码
2015/08/25 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
input框中的name和id的区别
2016/11/16 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
2017/12/27 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
2019/11/18 jQuery
js的Object.assign用法示例分析
2020/03/05 Javascript
Vue之封装公用变量以及实现方式
2020/07/31 Javascript
Vue 数据绑定的原理分析
2020/11/16 Javascript
跟老齐学Python之关于类的初步认识
2014/10/11 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
零基础小白多久能学会python
2020/06/22 Python
HTML5进度条特效
2014/12/18 HTML / CSS
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
linux下进程间通信的方式
2013/01/23 面试题
技术经理的自我评价范文
2013/12/03 职场文书
竞争上岗演讲稿
2014/01/05 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
小学生期末评语大全
2014/04/21 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书