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 相关文章推荐
基于jQuery的仿flash的广告轮播
Nov 05 Javascript
JS截取字符串常用方法整理及使用示例
Oct 18 Javascript
javascript使用定时函数实现跳转到某个页面
Dec 25 Javascript
JavaScript中number转换成string介绍
Dec 31 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
Dec 04 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
Jun 02 Javascript
jQuery实现发送验证码并60秒倒计时功能
Nov 25 Javascript
js实现鼠标拖动功能
Mar 20 Javascript
微信小程序Redux绑定实例详解
Jun 07 Javascript
jquery插件开发之选项卡制作详解
Aug 30 jQuery
使用Node搭建reactSSR服务端渲染架构
Aug 30 Javascript
TypeScript类型声明书写详解
Aug 28 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
php 地区分类排序算法
2013/07/01 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
Javascript 类型转换方法
2010/10/24 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
通过复制Table生成word和excel的javascript代码
2014/01/20 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
2017/02/08 Javascript
Vue无限滑动周选择日期的组件的示例代码
2018/07/18 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
Python数据类型详解(一)字符串
2016/05/08 Python
python中函数传参详解
2016/07/03 Python
python装饰器初探(推荐)
2016/07/21 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
python中get和post有什么区别
2020/06/19 Python
详解python对象之间的交互
2020/09/29 Python
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
求职者简历中的自我评价
2013/10/20 职场文书
十佳班主任事迹材料
2014/01/18 职场文书
服务员岗位责任制
2014/02/11 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
党员承诺书怎么写
2014/05/20 职场文书
会计个人实习计划书
2014/08/15 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
维稳工作情况汇报
2014/10/27 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书