详解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 相关文章推荐
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
Dec 02 Javascript
JS.elementGetStyle(element, style)应用示例
Sep 24 Javascript
jQuery实现模拟marquee标签效果
Jul 14 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
Oct 31 Javascript
JavaScript判断DIV内容是否为空的方法
Jan 29 Javascript
JavaScript中匿名函数的用法及优缺点详解
Jun 01 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
Aug 05 Javascript
jQuery 生成svg矢量二维码
Aug 09 Javascript
原生JavaScript实现Tooltip浮动提示框特效
Mar 07 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
Jul 24 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
Mar 14 Javascript
基于JavaScript实现猜数字游戏代码实例
Jul 30 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
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
javascript淘宝主图放大镜功能
2016/10/20 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
js判断是否是手机页面
2017/03/17 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
Angular中支持SCSS的方法
2017/11/18 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python MySQLdb Linux下安装笔记
2015/05/09 Python
python基于http下载视频或音频
2018/06/20 Python
Python中的枚举类型示例介绍
2019/01/09 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
python函数的作用域及关键字详解
2019/08/20 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
女方婚礼新郎答谢词
2014/01/11 职场文书
四风查摆剖析材料
2014/10/10 职场文书
离婚律师函范本
2015/05/27 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
MSSQL基本语法操作
2022/04/11 SQL Server
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js