详解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 相关文章推荐
cssQuery()的下载与使用方法
Jan 12 Javascript
IE6下通过a标签点击切换图片的问题
Nov 14 Javascript
javascript showModalDialog 内跳转页面的问题
Nov 25 Javascript
JavaScript的jQuery库插件的简要开发指南
Aug 12 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
Apr 08 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
May 18 Javascript
javascript url几种编码方式详解
Jun 06 Javascript
利用Javascript实现简单的转盘抽奖
Feb 13 Javascript
JS实现颜色动态淡化效果
Mar 06 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
Jul 11 Javascript
一个有意思的鼠标点击文字特效jquery代码
Sep 23 jQuery
vue实现输入框自动跳转功能
May 20 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中{}大括号是什么意思
2013/12/01 PHP
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
Thinkphp3.2实用篇之计算型验证码示例
2017/02/09 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
javascript 贪吃蛇实现代码
2008/11/22 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
ES6中非常实用的新特性介绍
2016/03/10 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
jQuery实现frame之间互通的方法
2017/06/26 jQuery
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
Python字符串逐字符或逐词反转方法
2015/05/21 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
python正则中最短匹配实现代码
2018/01/16 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
家教广告词
2014/03/19 职场文书
小摄影师教学反思
2014/04/27 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
财务管理制度范本
2015/08/04 职场文书
幼儿园小班教学反思
2016/03/03 职场文书
入党申请书怎么写?
2019/06/21 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书