菜单
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Vue 教程

Vue 首页 Vue Intro Vue Directives Vue v-bind Vue v-if Vue v-show Vue v-for Vue Events Vue v-on Vue Methods Vue Event Modifiers Vue Forms Vue v-model Vue CSS Binding Vue Computed Properties Vue Watchers Vue Templates

Scaling Up

Vue 为什么、如何以及设置 Vue 第一个 SFC 页面 Vue 组件 Vue Props Vue v-for 组件 Vue $emit() Vue 透传属性 Vue 作用域样式 Vue 本地组件 Vue 插槽 Vue v-slot Vue 作用域插槽 Vue 动态组件 Vue Teleport Vue HTTP 请求 Vue 模板引用 Vue 生命周期钩子 Vue Provide/Inject Vue 路由 Vue 表单输入 Vue 动画 Vue v-for 动画 Vue 构建 Vue Composition API

Vue Reference

Vue Built-in Attributes Vue Built-in Components Vue Built-in Elements Vue Component Instance Vue Directives Vue Instance Options Vue Lifecycle Hooks

Vue 示例

Vue Examples Vue Exercises Vue Quiz Vue Server Vue Certificate

Vue v-on 指令

与原生 JavaScript 中的事件处理方式类似,Vue 中的 v-on 指令告诉浏览器

  1. 要监听哪个事件(“click”、“keydown”、“mouseover”等)
  2. 当该事件发生时要做什么

使用 v-on 的示例

让我们通过一些示例来了解 v-on 如何与不同的事件以及在这些事件发生时要执行的不同代码一起使用。

注意: 要在事件发生时执行更高级的代码,我们需要引入 Vue 方法。在本教程的下一页了解 Vue 方法。


onclick 事件

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">开关灯</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>
自己动手试一试 »

oninput 事件

使用 v-on:input 在元素获得输入时执行操作,例如在文本字段中输入字符。

示例

计算输入文本字段中字符的次数

<div id="app">
  <input v-on:input="inpCount++">
  <p>{{ '发生的输入事件次数:' + 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>
自己动手试一试 »

mousemove 事件

使用 v-on:mousemove 在鼠标指针移到元素上时执行操作。

示例

每当鼠标指针移过 <div> 元素时,更改其背景颜色

<div id="app">
  <p>将鼠标指针移到下面的框上</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-for 循环中使用 v-on

您也可以在 v-for 循环中使用 v-on 指令。

数组的项在 v-on 值中对每次迭代都可用。

示例

基于 food 数组显示列表,并为每个项添加一个点击事件,该事件将使用数组项中的值来更改图像的源。

<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' 的简写就是 '@'。

示例

这里我们只写 '@' 而不是 'v-on'

<button @:click="lightOn = !lightOn">开关灯</button>
自己动手试一试 »

我们将在本教程稍后开始使用 @ 语法。


Vue 练习

通过练习来测试自己

练习

请完成代码,以便在单击按钮时切换图像。

<template>
  <button ="showImg = !showImg">
    Toggle image
  </button>
  <img src="flower.jpg" alt="flower" v-show="showImg">
</template>

<script>
  export default {
    data() {
      return {
        : true
      }
    }
  }
</script>

开始练习



×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持