详解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 相关文章推荐
用jscript实现列出安装的软件列表
Jun 18 Javascript
html数组字符串拼接的最快方法
Sep 16 Javascript
模拟一个类似百度google的模糊搜索下拉列表
Apr 15 Javascript
jquery使整个div区域可以点击的方法
Jun 24 Javascript
基于jquery步骤进度条源码分享
Nov 12 Javascript
JavaScript常用基础知识强化学习
Dec 09 Javascript
javascript中去除数组重复元素的实现方法【实例】
Apr 12 Javascript
JavaScript事件处理的方式(三种)
Apr 26 Javascript
微信小程序倒计时功能实现代码
Nov 09 Javascript
详解CommonJS和ES6模块循环加载处理的区别
Dec 26 Javascript
jQuery Datatables 动态列+跨列合并实现代码
Jan 30 jQuery
js实现弹幕飞机效果
Aug 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 adodb操作mysql数据库
2009/03/19 PHP
php实现的双向队列类实例
2014/09/24 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
PHP使用xpath解析XML的方法详解
2017/05/20 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
javascript prototype 原型链
2009/03/12 Javascript
javascript 表单规则集合对象
2009/07/21 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
2014/05/19 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
AngularJS中的按需加载ocLazyLoad示例
2017/01/11 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
[31:01]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS Orenda
2014/05/23 DOTA
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
Python面向对象之反射/自省机制实例分析
2018/08/24 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
python字典排序的方法
2019/10/12 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
实现CSS3中的border-radius(边框圆角)示例代码
2013/07/19 HTML / CSS
优秀老员工获奖感言
2014/02/15 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
五年级学生评语大全
2014/12/26 职场文书
MySQL注入基础练习
2021/05/30 MySQL