详解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 相关文章推荐
表单的一些基本用法与技巧
Jul 15 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
Oct 27 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
Dec 11 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
Sep 30 Javascript
extjs中form与grid交互数据(record)的方法
Aug 29 Javascript
JavaScript之Object类型介绍
Apr 01 Javascript
浅谈js的ajax的异步和同步请求的问题
Oct 07 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
Jul 19 Javascript
JS实现的加减乘除四则运算计算器示例
Aug 09 Javascript
JS装饰器函数用法总结
Apr 21 Javascript
js字符串处理之绝妙的代码
Apr 05 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
Apr 10 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
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
2014/12/18 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
jQuery获取this当前对象子元素对象的方法
2016/11/29 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
详解webpack2+React 实例demo
2017/09/11 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
QRCode.js二维码生成并能长按识别
2018/10/16 Javascript
详解a标签添加onclick事件的几种方式
2019/03/29 Javascript
vue element-ui实现动态面包屑导航
2019/12/23 Javascript
python+mysql实现简单的web程序
2014/09/11 Python
python图片验证码生成代码
2016/07/02 Python
判断网页编码的方法python版
2016/08/12 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
pytorch实现mnist分类的示例讲解
2020/01/10 Python
tensorflow多维张量计算实例
2020/02/11 Python
Python字符串及文本模式方法详解
2020/09/10 Python
python中openpyxl和xlsxwriter对Excel的操作方法
2021/03/01 Python
使用CSS3 制作一个material-design 风格登录界面实例
2016/12/12 HTML / CSS
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
受欢迎的大学生自我评价
2013/12/05 职场文书
综合办公室主任职责
2013/12/16 职场文书
模具专业自荐信
2014/05/29 职场文书
幼儿园大班见习报告
2014/10/31 职场文书
工作态度检讨书范文
2015/05/06 职场文书
python中的sys模块和os模块
2022/03/20 Python