Vue 表单控件绑定的实现示例


Posted in Javascript onAugust 11, 2017

本文介绍了Vue 表单控件绑定的实现示例,感觉这个地方知识点挺多的,而且很重要,所以,今天添加一点小笔记。

基础用法

可以用 v-model 指令在表单控件元素上创建双向数据绑定。根据控件类型它自动选取正确的方法更新元素。尽管有点神奇,v-model 不过是语法糖,在用户输入事件中更新数据,以及特别处理一些极端例子。

Text

<span>Message is: {{ message }}</span>
<br>
<input type="text" v-model="message" placeholder="edit me">

Checkbox

单个勾选框,逻辑值:

<input type="checkbox" id="checkbox" v-model="checked">
<label for="checkbox">{{ checked }}</label>

多个勾选框,绑定到同一个数组:

<input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
<label for="jack">Jack</label>
<input type="checkbox" id="john" value="John" v-model="checkedNames">
<label for="john">John</label>
<input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
<label for="mike">Mike</label>
<br>
<span>Checked names: {{ checkedNames | json }}</span>
new Vue({
 el: '...',
 data: {
  checkedNames: []
 }
})

Radio

<input type="radio" id="one" value="One" v-model="picked">
<label for="one">One</label>
<br>
<input type="radio" id="two" value="Two" v-model="picked">
<label for="two">Two</label>
<br>
<span>Picked: {{ picked }}</span>

Select

单选:

<select v-model="selected">
 <option selected>A</option>
 <option>B</option>
 <option>C</option>
</select>
<span>Selected: {{ selected }}</span>

多选(绑定到一个数组):

<select v-model="selected" multiple>
 <option selected>A</option>
 <option>B</option>
 <option>C</option>
</select>
<br>
<span>Selected: {{ selected | json }}</span>

动态选项,用 v-for 渲染:

<select v-model="selected">
 <option v-for="option in options" v-bind:value="option.value">
  {{ option.text }}
 </option>
</select>
<span>Selected: {{ selected }}</span>

new Vue({
 el: '...',
 data: {
  selected: 'A',
  options: [
   { text: 'One', value: 'A' },
   { text: 'Two', value: 'B' },
   { text: 'Three', value: 'C' }
  ]
 }
})

值绑定

对于单选按钮,勾选框及选择框选项,v-model 绑定的值通常是静态字符串(对于勾选框是逻辑值):

<!-- 当选中时,`picked` 为字符串 "a" -->
<input type="radio" v-model="picked" value="a">

<!-- `toggle` 为 true 或 false -->
<input type="checkbox" v-model="toggle">

<!-- 当选中时,`selected` 为字符串 "abc" -->
<select v-model="selected">
 <option value="abc">ABC</option>
</select>

但是有时我们想绑定值到 Vue 实例一个动态属性上。可以用 v-bind 做到。 而且 v-bind允许绑定输入框的值到非字符串值。

Checkbox

<input
 type="checkbox"
 v-model="toggle"
 v-bind:true-value="a"
 v-bind:false-value="b">
// 选中
vm.toggle === vm.a
// 取消选中
vm.toggle === vm.b

Radio

<input type="radio" v-model="pick" v-bind:value="a">
// 选中
vm.pick === vm.a

Select Options 

<select v-model="selected">
 <!-- 对象字面量 -->
 <option v-bind:value="{ number: 123 }">123</option>
</select>

// 选中
typeof vm.selected // -> 'object'
vm.selected.number // -> 123

参数特性

lazy

在默认情况下,v-model 在input 事件中同步输入框值与数据,可以添加一个特性lazy,从而改到在 change 事件中同步:

<!-- 在 "change" 而不是 "input" 事件中更新 -->
<input v-model="msg" lazy>

number

如果想自动将用户的输入保持为数字,可以添加一个特性 number:

<input v-model="age" number>

debounce

debounce 设置一个最小的延时,在每次敲击之后延时同步输入框的值与数据。如果每次更新都要进行高耗操作(例如在输入提示中 Ajax 请求),它较为有用。

<input v-model="msg" debounce="500">

注意 debounce 参数不会延迟 input 事件:它延迟“写入”底层数据。因此在使用 debounce时应当用 vm.$watch() 响应数据的变化。若想延迟 DOM 事件,应当使用 debounce 过滤器。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript脚本语言在网页中的简单应用
May 13 Javascript
js 对象是否存在判断
Jul 15 Javascript
有关于eclipse配置spket需要注意的一些地方
Apr 07 Javascript
jQuery图片轮播的具体实现
Sep 11 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
May 19 Javascript
BootStrap的Datepicker控件使用心得分享
May 25 Javascript
关于使用axios的一些心得技巧分享
Jul 02 Javascript
hammer.js实现图片手势放大效果
Aug 29 Javascript
深入理解Vue2.x的虚拟DOM diff原理
Sep 27 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
Aug 31 Javascript
学习jQuery中的noConflict()用法
Sep 28 jQuery
解决vue打包报错Unexpected token: punc的问题
Oct 24 Javascript
Angular4实现动态添加删除表单输入框功能
Aug 11 #Javascript
node中使用es5/6以及支持性与性能对比
Aug 11 #Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
Aug 11 #Javascript
JSON对象转化为字符串详解
Aug 11 #Javascript
JS中Swiper的使用和轮播图效果
Aug 11 #Javascript
移动端触摸滑动插件swiper使用方法详解
Aug 11 #Javascript
Echarts基本用法_动力节点Java学院整理
Aug 11 #Javascript
You might like
PHP+Tidy-完美的XHTML纠错+过滤
2007/04/10 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
2010/04/15 PHP
php各种编码集详解和以及在什么情况下进行使用
2011/09/11 PHP
求PHP数组最大值,最小值的代码
2011/10/31 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
jQuery中delegate()方法用法实例
2015/01/19 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
致Python初学者 Anaconda入门使用指南完整版
2018/04/05 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
python 爬虫爬取京东ps4售卖情况
2020/12/18 Python
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
大一自我鉴定范文
2013/10/04 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
十八届三中全会报告学习材料
2014/02/17 职场文书
销售个人求职信范文
2014/04/28 职场文书
2014年教师节寄语
2014/08/11 职场文书
欢迎词范文
2015/01/27 职场文书
2015年简历自我评价范文
2015/03/11 职场文书
自主招生专家推荐信
2015/03/26 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
MySQL七种JOIN类型小结
2021/10/24 MySQL