Vue.js学习笔记:v-no绑定事件

v-on 指令用于监听DOM事件 形式如:v-on:click  缩写为 @click

<!-- 完整语法 -->
<a v-on:click="doSomething"></a>

<!-- 缩写 -->
<a @click="doSomething"></a>



(一).监听DOM事件

以用 v-on 指令监听 DOM 事件来触发一些 JavaScript 代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-on的使用</title>
   
</head>
<body>
<div id="example-1">
	<button @click="counter += 1">增加 1</button>
	<p>这个按钮被点击了 {{ counter }} 次。</p>
</div>
<script src="js/vue.js"></script>
<script>
	var example1 = new Vue({
		el: '#example-1',
		data: {
			counter: 0
		}
	})
</script> 
</body>
</html>





(二).方法处理器

直接把 JavaScript 代码写在 v-on 指令中是不可行的。因此 v-on 可以接收一个定义的方法来调用。,绑定一个单机事件的处理方法showMsg到methods中


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-on的使用</title>
   
</head>
<body>
<div id="box">
    <button class="btn btn-success" v-on:click="showMsg">{{msg}}</button>
</div>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
    el:'#box', //el指代选择器如 id,class,tagName
    data:{
        msg:'点击按钮', //这里仅仅是为了生硬的强化记忆vue双括号标签写法
        name:'Vue.js'
    },
    methods:{  //在methods对象中定义方法
        showMsg: function(e){
            //方法中的this,指代new Vue这个实例对象,可以再次验证下
            console.log(this);
            //event 是原生DOM事件
            console.log(e.target); //打印出事件源对象button
            console.log('Hello ' + this.name + ' !');
        }
    }
});
</script> 
</body>
</html>





(三).内联处理器方法

除了直接绑定到一个方法里面,也可以用内联Javascript语句

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-on的使用</title>
</head>
<body>
<div id="example-1">
	<button class="btn btn-default" v-on:click="say('hello ,欢迎你学习vue.js')">
	hello ,欢迎你学习vue.js</button> 
</div>
<script src="js/vue.js"></script>
<script>
	var example1 = new Vue({
		el: '#example-1',
		methods: {
		    say: function (message) {
		      console.log(message)
		    }
		}
	})
</script> 
</body>
</html>





有时也需要在内联语句处理器中访问原生DOM事件,比如阻止链接跳转。可以用特殊变量$event把它传入方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-on的使用</title>
</head>
<body>
<div id="example-1">
    <a href="http://cn.vuejs.org/guide/events.html" @click="stop(test, $event)">打开Vue官网</a>
</div>
<script src="js/vue.js"></script>
<script>
	var example1 = new Vue({
		el: '#example-1',
		data:{
	        test:'阻止链接跳转'
	    },
	    methods:{
	        stop: function(test, e){
	            e.preventDefault();
	            alert(test);
	        }
	    }
	})
</script> 
</body>
</html>


点击a链接以后,页面还能跳转到vue官网吗?



(四).事件修饰符

在事件处理器中经常需要调用event.preventDefault()或event.stopPropagation()。尽管我们可以在 methods 中轻松实现这点,但更好的方式是:methods 只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。


<!-- 阻止单击事件冒泡 -->
<a v-on:click.stop="doThis"></a>


<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>


<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat">


<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>


<!-- 添加事件侦听器时使用 capture 模式 -->
<div v-on:click.capture="doThis">...</div>


<!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
<div v-on:click.self="doThat">...</div>


(五).键值修饰符

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

在此之前先了解keycode的相关知识

<input v-on:keyup.13="submit">    最体可以看官网:https://cn.vuejs.org/v2/guide/events.html#事件修饰符


(六)为什么在HTML中监听事件?

(1)、扫一眼HTML模板便能轻松定位在Javascript代码里对应的方法。

(2)、因为你无需在Javascript里手动绑定事件,你的ViewModel代码可以是非常纯粹的逻辑,和DOM完全解耦,更易于测试。

(3)、当一个ViewModel被销毁时,所有的事件处理器都会被自动删除,你无需担心如何自己清楚它们


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值