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 插件制作实践 xMarquee插件V1.0
Apr 02 Javascript
js实现ArrayList功能附实例代码
Oct 29 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
May 10 Javascript
JavaScript中数组Array方法详解
Feb 27 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
Sep 21 Javascript
javascript实现数字配对游戏的实例讲解
Dec 14 Javascript
angular2实现统一的http请求头方法
Aug 13 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
Oct 19 Javascript
JS实现提示效果弹出及延迟隐藏的功能
Aug 26 Javascript
Layui实现数据表格默认全部显示(不要分页)
Oct 26 Javascript
jQuery 动画与停止动画效果实例详解
May 19 jQuery
JavaScript实现多球运动效果
Sep 07 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类中private属性继承问题分析
2012/11/01 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
2011/10/24 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
node.js读取文件到字符串的方法
2015/06/29 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
JS实现自动阅读单词(有道单词本添加功能)
2016/11/14 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
原生javascript制作的拼图游戏实现方法详解
2020/02/23 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
使用Python操作excel文件的实例代码
2017/10/15 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
Python内置函数locals和globals对比
2020/04/28 Python
利用HTML5+CSS3实现3D转换效果实例详解
2017/05/02 HTML / CSS
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
商务日语专业毕业生自荐信
2014/03/27 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
成绩报告单家长评语
2014/12/30 职场文书
安全教育日主题班会
2015/08/13 职场文书
公司年会晚会开幕词
2019/04/02 职场文书
python中24小时制转换为12小时制的方法
2021/06/18 Python
Python制作表白爱心合集
2022/01/22 Python