点击下载word文档
VUE学习(六)
事件监听处理
为了实现各种效果,我们总是不可避免的为一些元素绑定事件,例如,给一个按钮绑定一个点击事件,点击之后弹出窗口。
事件监听
<!--可以用v-on指令监听DOM事件,并在触发时运行一些JavaScript代码。-->
<!--test1:示例-->
<div id="example-1">
<button v-on:click="counter += 1">Add 1</button>
<p>The button above has been clicked {{ counter }} times.</p>
</div>
<br />
<script>
var example1 = new Vue({
el: '#example-1',
data: {
counter: 0
}
})
</script>
运行结果:每点击一下add1之后下边就会加1
<!--我们不可能把JavaScript代码写在v-on指令中所以我们可以把他提取成一个方法,在v-on指令中调用-->
<div id="example-2">
<!-- `greet`是在下面定义的方法名-->
<button v-on:click="greet">Greet</button>
</div>
<script>
var example2 = new Vue({
el: '#example-2',
data: {
name: 'Vue.js'
},
//在`methods`对象中定义方法
methods: {
greet: function (event) {
// `this`在方法里指向当前Vue实例
alert('Hello ' + this.name + '!')
// `event`是原生DOM事件
if (event) {
alert(event.target.tagName)
}
}
}
})
</script>
运行结果:
点击按钮先后弹出后两个弹窗
<!--方法有了那我们还可以向方法内传参-->
<div id="example-3">
<button v-on:click="say('hi')">Say hi</button>
<button v-on:click="say('what')">Say what</button>
</div>
<script>
new Vue({
el: '#example-3',
methods: {
say: function (message) {
alert(message)
}
}
})
</script>
运行结果:
修饰符
很多时候我们要对事件进行操作,例如阻止提交。我们可以调用调用 event.preventDefault() 或 event.stopPropagation()但是vue给我们提供了相应的修饰符
.stop
.prevent
.capture
.self
.once
<!--阻止单击事件继续传播-->
<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>
<!--只当在event.target是当前元素自身时触发处理函数-->
<!--即事件不是从内部元素触发的-->
<div v-on:click.self="doThat">...</div>
<!--点击事件将只会触发一次-->
<a v-on:click.once="doThis"></a>
<!--使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,
用@click.prevent.self会阻止所有的点击,而@click.self.prevent只会阻止对元素自身的点击。-->