vue之v-on
我们可以用 v-on 指令绑定一个事件监听器,通过它调用我们 Vue 实例中定义的方法:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue</title>
<script src="./vue.js"></script>
</head>
<body>
<div id="demo">
<button @click="counter += 1">{{counter}}</button>
<button v-on:click="cl">{{message}}</button>
<button @click="say('hi')">内联语句</button>
</div>
<script>
var demo = new Vue({
el:'#demo',
data:{
message: "hello",
counter:0,
test:''
},
methods:{
cl(){
this.message = this.message + ' vue!';
},
}
})
</script>
</body>
</html>


事件修饰符
- stop 阻止冒泡
- prevent 阻止默认事件
- capture 使用事件捕获模式
- self 只在当前元素本身触发
- once 只触发一次
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue</title>
<script src="./vue.js"></script>
</head>
<body>
<div id="demo">
<button v-on:click="cl">{{message1}}</button>
<button v-on:click.once="c2">{{message2}}</button>
<a href="http://cnblogs.com" target="_blank">普通链接</a>
<a @click.prevent href="http://cnblogs.com" target="_blank">取消默认行为</a> </div>
<script>
var demo = new Vue({
el:'#demo',
data:{
message1: "hello",
message2: "hello",
counter:0,
},
methods:{
cl(){
this.message1 = this.message1 + ' vue!';
},
c2(){
this.message2 = this.message2 + ' vue!';
},
}
})
</script>
</body>
</html>

需要注意的是,使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,用 @click.prevent.self 会阻止所有的点击,而 @click.self.prevent 只会阻止元素上的点击。
鼠标修饰符
- left 左键
- right 右键
- middle 滚轮
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue</title>
<script src="./vue.js"></script>
</head>
<body>
<div id="demo">
<button @mouseup.right="right" @mouseup.middle="middle" @mouseup.left="left">{{message}}
</div>
<script>
var demo = new Vue({
el:'#demo',
data:{
message: "hello",
text:'点我'
},
methods:{
left(){
this.message = 'left'
},
right(){
this.message = 'right'
},
middle(){
this.message = 'middle'
},
}
})
</script>
</body>
</html>
分别点击鼠标左键,右键和滚轮时,会触发不同的事件:




键值修饰符
在监听键盘事件时,我们经常需要监测常见的键值。 Vue 允许为 v-on 在监听键盘事件时添加关键修饰符。
- .enter
- .tab
- .delete (捕获 “删除” 和 “退格” 键)
- .esc
- .space
- .up
- .down
- .left
- .right
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue</title>
<script src="./vue.js"></script>
</head>
<body>
<div id="demo">
<button v-on:keyup.enter="enter">{{message}}<br>
<button @keyup.tab="tab">{{message}}<br>
<button @keyup="show($event)">{{message}}<br>
</div>
<script>
var demo = new Vue({
el:'#demo',
data:{
message: "hello",
},
methods:{
enter(){
this.message = 'enter'
},
tab(){
this.message = 'tab'
},
show(e){
this.message = e.keyCode
}
}
})
</script>
</body>
</html>
表单事件
在进行表单提交时,页面会刷新,导致我们绑定的表单提交事件执行出问题,会避免刷新,我们需要使用阻止修饰符。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue</title>
<script src="./vue.js"></script>
</head>
<body>
<div id="demo">
<form v-on:submit.prevent="onSubmit">
<input type="text"><br />
<input type="submit" value="提交">
</form>
</div>
<script>
var demo = new Vue({
el:'#demo',
data:{
message: "hello",
},
methods:{
onSubmit(){
alert('提交')
},
}
})
</script>
</body>
</html>

vue之v-on的更多相关文章
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十║Vue基础终篇:传值+组件+项目说明
缘起 新的一天又开始啦,大家也应该看到我的标题了,是滴,Vue基础基本就到这里了,咱们回头看看这一路,如果你都看了,并且都会写了,那么现在你就可以自己写一个Demo了,如果再了解一点路由,ajax请求 ...
- Vue基础(环境配置、内部指令、全局API、选项、内置组件)
1.环境配置 安装VsCode 安装包管理工具:直接下载 NodeJS 进行安装即可,NodeJS自带 Npm 包管理工具,下载地址:https://nodejs.org/en/download/安装 ...
- vue集成环信IM
vue 集成环信im 简单demo 环信AppKey:1106190415055331#test 测试账号: test1 123456 test2 123456 test3 123456 默 ...
- Vue main.js 文件中全局组件注册部分
在 \src\components\index.js 文件中export组件 import HeaderList from './HeaderList' import HeaderMenu from ...
- vue.js的ajax和jsonp请求
首先要声明使用ajax 在 router下边的 Index.js中 import VueResource from 'vue-resource'; Vue.use(VueResource); ajax ...
- 如何在Vue项目中使用Typescript
0.前言 本快速入门指南将会教你如何在Vue项目中使用TypeScript进行开发.本指南非常灵活,它可以将TypeScript集成到现有的Vue项目中任何一个阶段. 1.初始化项目 首先,创建一个新 ...
- vue基础响应式数据
1.vue 采用 v……vm……m,模式,v---->el,vm---->new Vue(实例),m---->data 数据,让前端从操作大量的dom元素中解放出来. 2.vue响应 ...
- vue.js 配置axios 用来ajax请求数据
* 用npm 安装 axios 切换到项目的根目录 npm install --save axios vue-axios * 在vue的入口文件./src/main.js 中引入axios, 添加2行 ...
- 第六十二篇:Vue的双向绑定与按键修饰符
好家伙,依旧是vue的基础 1.按键修饰符 假设我们在一个<input>框中输入了12345,我们希望按一下"Esc" 然后删除所有前面输入的内容,这时候,我们会用到按 ...
- 微信小程序探究
前段时间比较流行的微信小程序,因为一直没有所谓内测码也没具体关注.拖到现在正好借组内分享的时机来仔细了解一下微信小程序.了解一个新的事物无外乎从是什么(本质),怎么用(具体用法),为什么用(优缺点)来 ...
随机推荐
- c++中的stl
String Vector Set List Map 1.string char* s1 = "Hello SYSU!"; //创建指针指向字符串常量,这段字符串我们是不能修改的 ...
- hdu2328 Corporate Identity 扩展KMP
Beside other services, ACM helps companies to clearly state their “corporate identity”, which includ ...
- string的方法find
官方解释:find(sub[, start[, end]]) Return the lowest index in the string where substring sub is found wi ...
- 【SpringBoot】SpringBoot热部署和配置文件自动注入实战
========================3.SpringBoot热部署devtool和配置文件自动注入实战 ============================ 1.SpringBoot2 ...
- 微信公众号文章转语音tts
微信公众号里面的文章在走路或者开车时候不方便浏览,希望能增加一个文字转语音功能,那么问题来了,到底哪家文字转语音技术强呢? 经过验证,目前发现最好用的还是balabolka ,国内的什么“录音啦”,试 ...
- 原生js实现ajax用于简单的签到或登录
<script> function createStandardXHR() { try { return new window.XMLHttpRequest(); ...
- mysql为int类型的字段php取出来之后为何变为string类型?
https://segmentfault.com/q/1010000002957162 php从mysql取出int数据,变成了string https://blog.csdn.net/as17501 ...
- (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
问题说明80端口被占用,用netstat -nlp |grep :80命令看看有什么进程占用了80端口,发现是httpd进程. 没想到安装了两个apache,我安装apache2.4的时候删除了2.2 ...
- JavaScript 中 this的指向
this 一方面便利了让大家在JS开发当, 但是另一方面让开发者头痛的是不清楚this 指代什么. 指向全局Window: <script> console.log(this); < ...
- create-react-app 搭建的项目中,使用 stylus
相关介绍文章: react学习系列1 修改create-react-app配置支持stylus:https://www.jianshu.com/p/9cd7a0dff11f 在react中使用styl ...