Vue.js事件处理器与表单控件绑定详解


Posted in Javascript onMarch 20, 2017

事件处理主要通过v-on这个指令来执行。

事件监听及方法处理

1.简单的可以直接内嵌在页面。

2.可以通过将方法定义在methods中,然后再v-on中执行

3.可以通过绑定给函数传递参数,还可以传递通过变量$event给函数传递原生DOM事件。

<div id="app-1">
 <button v-on:click="counter += 1">增加1</button>
 <p>这个按钮被点击了{{counter}}</p>
 <button v-on:click="great">great</button>
 <button @click="sya('hi')">say hi</button>
 <button @click="warn('form cannot be submit yet', $event)">submit</button>
</div>
<script type="text/javascript">
 var app1 = new Vue({
 el:'#app-1',
 data:{
 counter:0
 },
 methods:{
 great:function(event){
 alert('点击数目为'+ this.counter);
 alert(event.target.tagName);
 },
 sya:function(message){
 alert(message);
 },
 warn:function(msg,event){
 if(event) event.preventDefault();
 alert(msg);
 }
 }
 })
</script>

事件修饰器

Vue.js 为 v-on 提供了 事件修饰符。通过由点(.)表示的指令后缀来调用修饰符。

.stop
.prevent
.capture
.self

<div id="app2">
<!-- 阻止单击事件冒泡 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
<!-- 添加事件侦听器时使用时间捕获模式 -->
<div v-on:click.capture="doThis">...</div>
<!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
<div v-on:click.self="doThat">...</div>
</div>

按键修饰符

在监听键盘事件时,我们经常需要监测常见的键值。 Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:

<!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
<input v-on:keyup.13="submit">

记住所有的 keyCode 比较困难,所以 Vue 为最常用的按键提供了别名:

<!-- 同上 -->
<input v-on:keyup.enter="submit">
<!-- 缩写语法 -->
<input @keyup.enter="submit">

全部的按键别名:

enter
tab
delete (捕获 “删除” 和 “退格” 键)
esc
space
up
down
left
right

可以通过全局 config.keyCodes 对象自定义按键修饰符别名:

// 可以使用 v-on:keyup.f1
Vue.config.keyCodes.f1 = 112

表单控件绑定

通过前面的一些学习,我们知道v-model在输入框中具有双向响应功能。但 v-model 本质上不过是语法糖,它负责监听用户的输入事件以更新数据,并特别处理一些极端的例子。

//文本
<input type="text" v-model="message" placeholder="edit it">
<p>this message is {{message}}</p>
<hr>
//多行文本
<span>Multiline message is:</span>
<p style="white-space: pre">{{ message }}</p>
<br>
<textarea v-model="message" placeholder="add multiple lines"></textarea>
<hr>
//复选框
<input type="checkbox" id="checkbox" v-model="checked">
<label for="checkbox">{{ checked }}</label>
<hr>
<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 }}</span>
<hr>
//单选按钮
<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>
<hr>
//选择列表
<select v-model="selected">
 <option>A</option>
 <option>B</option>
 <option>C</option>
</select>
<span>Selected: {{ selected }}</span>
<hr>
<select v-model="mulselected" multiple>
 <option>A</option>
 <option>B</option>
 <option>C</option>
</select>
<br>
<span>Selected数组: {{ mulselected }}</span>

动态属性

<input
 type="checkbox"
 v-model="toggle"
 v-bind:true-value="a"
 v-bind:false-value="b">
<p>toggle的值为{{toggle}}</p>
<input type="radio" v-model="pick" v-bind:value="a">
<select v-model="selected">
 <!-- 内联对象字面量 -->
 <option v-bind:value="{ number: 123 }">123</option>
</select>

修饰符

lay:在改变后才触发

<input v-model.lazy="msg" >

number:将输出字符串转为Number类型

<input v-model.number="age" type="number">

trim:自动过滤用户输入的首尾空格

<input v-model.lazy.trim="msg" >

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

Javascript 相关文章推荐
JavaScript实现url地址自动检测并添加URL链接示例代码
Nov 12 Javascript
JavaScript验证图片类型(扩展名)的函数分享
May 05 Javascript
node.js中的http.response.getHeader方法使用说明
Dec 14 Javascript
javascript self对象使用详解
Oct 18 Javascript
Vue中的数据监听和数据交互案例解析
Jul 12 Javascript
jQuery封装animate.css的实例
Jan 04 jQuery
微信小程序中实现手指缩放图片的示例代码
Mar 13 Javascript
jQuery中图片展示插件highslide.js的简单dom
Apr 22 jQuery
详解Vue demo实现商品列表的展示
May 07 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
May 16 Javascript
p5.js实现故宫橘猫赏秋图动画
Oct 23 Javascript
vue 更改连接后台的api示例
Nov 11 Javascript
Vue.js基础学习之class与样式绑定
Mar 20 #Javascript
详解Vue中添加过渡效果
Mar 20 #Javascript
JS模拟实现ECMAScript5新增的数组方法
Mar 20 #Javascript
JavaScript 过滤关键字
Mar 20 #Javascript
Extjs表单输入框异步校验的插件实现方法
Mar 20 #Javascript
js实现鼠标拖动功能
Mar 20 #Javascript
基于vue2的table分页组件实现方法
Mar 20 #Javascript
You might like
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
Firefox getBoxObjectFor getBoundingClientRect联系
2008/10/26 Javascript
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
python实现文法左递归的消除方法
2020/05/22 Python
DRF框架API版本管理实现方法解析
2020/08/21 Python
Python实现石头剪刀布游戏
2021/01/20 Python
法学函授自我鉴定
2014/02/06 职场文书
教师师德反思材料
2014/02/15 职场文书
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
投资合作协议书范本
2014/04/17 职场文书
七一党日活动总结
2014/07/08 职场文书
电力培训心得体会
2014/09/02 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
酒店辞职书怎么写
2015/02/26 职场文书
opencv 分类白天与夜景视频的方法
2021/06/05 Python
Python的这些库,你知道多少?
2021/06/09 Python
MySQL数据库必备之条件查询语句
2021/10/15 MySQL
JavaScript中isPrototypeOf函数
2021/11/07 Javascript