v-on
指令就像纯 JavaScript 中的事件处理一样,v-on
Vue 中的指令告诉浏览器:
v-on
让我们看一些例子来了解如何v-on
可以与不同的事件一起使用,并在这些事件发生时运行不同的代码。
笔记:为了在事件发生时运行更高级的代码,我们需要引入 Vue 方法。在本教程的下一页了解 Vue 方法。
v-on 指令允许我们根据指定的事件执行操作。
使用v-on:click
单击元素时执行操作。
这个v-on
指令用于 <button> 标记来监听“click”事件。当“click”事件发生时,“lightOn”数据属性在“true”和“false”之间切换,使灯泡后面的黄色 <div> 可见/隐藏。
<div id="app">
<div id="lightDiv">
<div v-show="lightOn"></div>
<img src="img_lightBulb.svg">
</div>
<button v-on:click="lightOn = !lightOn">Switch light</button>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
lightOn: false
}
}
})
app.mount('#app')
</script>
亲自试一试 »
使用v-on:input
当元素获得输入时执行操作,例如在文本字段中击键。
计算输入文本字段的击键次数:
<div id="app">
<input v-on:input="inpCount++">
<p>{{ 'Input events occured: ' + inpCount }}</p>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
inpCount: 0
}
}
})
app.mount('#app')
</script>
亲自试一试 »
使用v-on:mousemove
当鼠标指针移动到元素上时执行操作。
每当鼠标指针移到 <div> 元素上时,更改其背景颜色:
<div id="app">
<p>Move the mouse pointer over the box below</p>
<div v-on:mousemove="colorVal=Math.floor(Math.random()*360)"
v-bind:style="{backgroundColor:'hsl('+colorVal+',80%,80%)'}">
</div>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
colorVal: 50
}
}
})
app.mount('#app')
</script>
亲自试一试 »
您还可以使用v-on
a 内的指令v-for
环形。
数组的项目可用于内部的每次迭代v-on
值。
显示基于食物数组的列表,并为每个项目添加一个单击事件,该事件将使用数组项目中的值来更改图片的来源。
<div id="app">
<img v-bind:src="imgUrl">
<ol>
<li v-for="food in manyFoods" v-on:click="imgUrl=food.url">
{{ food.name }}
</li>
</ol>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
imgUrl: 'img_salad.svg',
manyFoods: [
{name: 'Burrito', url: 'img_burrito.svg'},
{name: 'Salad', url: 'img_salad.svg'},
{name: 'Cake', url: 'img_cake.svg'},
{name: 'Soup', url: 'img_soup.svg'}
]
}
}
})
app.mount('#app')
</script>
亲自试一试 »
v-on
' 的简写v-on
' 简直就是 '@
'。
我们将开始使用@
本教程稍后会介绍语法。
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!