详解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原型模式用法实例详解
Jun 04 Javascript
浅谈javascript函数式编程
Sep 06 Javascript
使用CoffeeScrip优美方式编写javascript代码
Oct 28 Javascript
Js遍历键值对形式对象或Map形式的方法
Aug 08 Javascript
js字符串引用的两种方式(必看)
Sep 18 Javascript
js is_valid_filename验证文件名的函数
Jul 19 Javascript
使用cropper.js裁剪头像的实例代码
Sep 29 Javascript
vue 动态修改a标签的样式的方法
Jan 18 Javascript
通过 JS 判断页面是否有滚动条的实现方法
Apr 05 Javascript
VueJS 组件参数名命名与组件属性转化问题
Dec 03 Javascript
vue cli 3.x 项目部署到 github pages的方法
Apr 17 Javascript
基于Layui自定义模块的使用方法详解
Sep 14 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异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
2011/05/19 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
js 得到文件后缀(通过正则实现)
2013/07/08 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
javascript实现拖放效果
2015/12/16 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
在vue项目中使用Nprogress.js进度条的方法
2018/01/31 Javascript
vue实现重置表单信息为空的方法
2018/09/29 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
python自动化测试实例解析
2014/09/28 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
戴森英国官网:Dyson英国
2019/05/07 全球购物
英语系毕业生自荐信
2013/10/31 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
五一放假通知怎么写
2015/08/18 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
常用的Python代码调试工具总结
2021/06/23 Python
光之国的四大叛徒:第一贝利亚导致宇宙毁灭,赛文奥特曼在榜
2022/03/18 日漫
MySQL Server 层四个日志
2022/03/31 MySQL
Oracle锁表解决方法的详细记录
2022/06/05 Oracle