当前位置: 首页 > article >正文

第六节——Vue中的事件

一、定义事件

Vue 元素的事件处理和 DOM 元素的很相似,但是有一点语法上的不同

使用@修饰符(v-on:的缩写)+事件名的方式 给dom添加事件后面跟方法名,方法名可以直接加括号如@click="add()"里面进行传参。对应的事件处理函数必须在 methods对象中定义。

<template>
  <div>
    <!-- 在button上定义点击事件 -->
    <button @click="hello('传入的参数')">你好</button>
  </div>
</template>
<script>
export default {

  /**
   * methods 在vue定义 方法的属性对象
   * 所有的方法都必须在methods里面定义
   */
  methods: {
    hello (msg) {
      console.log("事件触发啦哈哈哈")
      console.log(msg)
    }
  }
}

</script>

二、事件修饰符

为了更好地处理事件,Vue3提供了一些便利的事件修饰符。事件修饰符可以用于改变默认事件行为、限制事件触发条件等如.stop、.prevent、.capture、.self、.once等等。下面是一些常用的事件修饰符用法

1、.stop

阻止事件冒泡,即停止事件在父元素中的传播。

<template>
  <div class="box"  @click="handle2">
    <div class="box2" @click="handle"></div>
  </div>
</template>

<script>
export default {

  methods: {
    handle () {
      console.log('触发')
    },

    handle2 () {
      console.log("冒泡")
    }
  }
}

</script>

2、.prevent

阻止事件的默认行为,如提交表单或点击链接后的页面跳转。

<template>
  <!-- 只触发点击事件,不触发跳转 -->
  <a href="https://www.baidu.com" @click.prevent="handle">百度</a>
</template>

<script>
export default {
  methods: {
    handle() {
      console.log("触发");
    }
  },
};
</script>

3、.once

只触发一次事件处理方法,之后解绑事件

<template>
  <button @click.once="handle">点击一次就失效</button>
</template>

<script>
export default {
  methods: {
    handle() {
      console.log("触发");
    },
  },
};
</script>

三、event对象

1、默认传入获取event

<template>
  <!-- 
    如果事件什么都不传、并且不写()
    那么事件处理函数会默认接收到event对象
   -->
  <button @click="handle">点击</button>
</template>

<script>
export default {
  methods: {
    handle(event) {
      console.log(event);
    },
  },
};
</script>

2、携带其他参数获取event

<template>
  <!-- 
    使用在template里面使用$event获取当前事件的event对象
   -->
  <button @click="handle('第一个参数', $event)">点击</button>
</template>

<script>
export default {
  methods: {
    handle(msg, event) {
      console.log(event);
    },
  },
};
</script>

四、在函数内使用this获取当前Vue上下文

可以直接使用this.xx 使用data里定义的状态,或者使用this.xx()调用methods里面定义的其他函数

注意:this指向问题

<template>
  <button @click="handle">点击</button>
</template>

<script>
export default {
  data() {
    return {
      num: 1,
    };
  },

  methods: {
    handle() {
      console.log(this.num);
      this.handle2()
    },
    handle2() {
      console.log("第二个方法");
    },
  },
};
</script>

http://www.kler.cn/a/105723.html

相关文章:

  • HarmonyOS Next 关于页面渲染的性能优化方案
  • vscode 快捷键生成代码
  • 3D Gaussian Splatting 代码层理解之Part2
  • 博客文章怎么设计分类与标签
  • leetcode 扫描线专题 06-leetcode.836 rectangle-overlap 力扣.836 矩形重叠
  • 视觉SLAM相机——单目相机、双目相机、深度相机
  • 【深度学习 | Transformer】释放注意力的力量:探索深度学习中的 变形金刚,一文带你读通各个模块 —— 总结篇(三)
  • 2.7每日一题(分段函数不定积分)
  • Node编写获取用户信息接口
  • 华为eNSP配置专题-策略路由的配置
  • [100天算法】-实现 Trie(day 41)
  • element ui el-table表格纵向横向滚动条去除并隐藏空白占位列
  • 前端开发技术栈(工具篇):2023深入了解webpack的安装和使用以及核心概念和启动流程(详细) 63.3k stars
  • Django 实战开发(一)项目搭建
  • NDK交叉编译FFmpeg安卓编译ffmpeg
  • linux可视化运维工具
  • 如何在Postman中使用静态HTTP
  • Kubernetes 特性门控
  • 全连接层是什么,有什么作用?
  • 域控操作三点五:使用策略下发将域用户添加到本地管理员组
  • 【干货】JVS低代码表单基础组件的配置与应用
  • SPP Net 目标检测网络学习笔记 (附代码)
  • DevOps持续集成-Jenkins(1)
  • stm32的ADC采样率如何通过Time定时器进行控制
  • 【表面缺陷检测】钢轨表面缺陷检测数据集介绍(2类,含xml标签文件)
  • R语言代码示例