冇事来学系--Vue2.0事件绑定

简介: 事件绑定指令v-on事件绑定指令,用于为DOM元素绑定事件监听语法格式 --> v-on: 事件名称="事件处理函数名称"若需要传递参数,则在事件处理函数名称后面加个括号( ),在括号内写入参数

事件绑定指令


  • v-on事件绑定指令,用于为DOM元素绑定事件监听
  • 语法格式 --> v-on: 事件名称="事件处理函数名称"
  • 若需要传递参数,则在事件处理函数名称后面加个括号( ),在括号内写入参数
<!-- 点击按钮,count的值+1或者-1 -->
<div id="app">
  <p>count 的值为:{{ count }}</p>
  <button v-on:click="addCount"> +1 </button>
  <button v-on:click="subCount"> -1 </button>
  <button v-on:click="addN(2)"> +n </button>    <!-- 每次加2 -->
</div>


// el是表明vue控制区域的;data对象是要渲染到页面的数据;methods对象是定义事件处理函数的位置
const vm = new Vue({      // 创建vue实例对象
  el: '#app',
  data: {
    count: 0
  },
  methods: {            // 注意是methods,s别丢了
    add: function(){},    // 这种是普通的写法,日常开发中通常使用简写,如下:
    addCount(){
      console.log(vm)   // 打印vue实例对象vm,可以发现要修改的数据count是vm的一个属性
      // vm.count += 1      // 通过vm对象的count属性,来修改count的值。但是通常不这么写,而是直接用this
      this.count += 1   // this指向的就是vue的对象实例vm
    },
    subCount(){
      this.count -= 1
    },
    addN(n){
      this.count += n
    }
  }
})


  • 由于v-on指令使用的非常多,所以通常使用简写,符号为@    (v-bind简写为冒号:)

事件处理函数的简写:当事件处理函数只有一句代码时,可以 直接写在行内,以字符串的形式,在绑定事件的背后用等号连接

<button @click="i+=1">加1</button>


事件对象$event

  • 使用事件对象的两种情况
<div id="app">
  <p>count 的值为:{{ count }}</p>
  <button v-on:click="add"> +n </button>    
</div>
// 需求:当count为偶数的时候,按钮背景颜色变为红色
const vm = new Vue({      // 创建vue实例对象
  el: '#app',
  data: {
    count: 0
  },
  methods: {            // 注意是methods,s别丢了
    add(e){
      this.count += 1;
      // 判断this.count是否为偶数,来决定按钮背景变色
      if(this.count %2 == 0){
        e.target.style.backgroundColor = 'red'      // e.target是触发事件的事件源
      }else {
        e.target.style.backgroundColor = ''
      }
    }
  }
})
<div id="app">
  <p>count 的值为:{{ count }}</p>
  <button v-on:click="add(1)"> +n </button> <!-- 当事件处理函数传入参数时,就会覆盖掉原有的事件对象 -->
</div>
const vm = new Vue({      // 创建vue实例对象
  el: '#app',
  data: {
    count: 0
  },
  methods: {            // 注意是methods,s别丢了
    add(e){             // 因为上面的使用,add函数是传入了参数的,所以这个e是形参而非事件对象
      this.count += 1;
      // 判断this.count是否为偶数,来决定按钮背景变色
      if(this.count %2 == 0){
        e.target.style.backgroundColor = 'red'      // e是形参也就没有e.target,所以这里会报错
      }else {
        e.target.style.backgroundColor = ''
      }
    }
  }
})
  • 对于传入的参数覆盖了事件对象e的问题, vue提供了一个内置变量$event,这就是原生DOM的事件对象e

如果默认的事件对象e被覆盖了,则可以手动传递一个$event

<button v-on:click="add(1, $event)"> +n </button> <!-- 这里传入两个实参,$event的就是事件对象(固定写法) -->
// 处理函数定义也要写入两个形参
add(n, e){              // 这两个参数位置可换
      this.count += n;
      // 判断this.count是否为偶数,来决定按钮背景变色
      if(this.count %2 == 0){
        e.target.style.backgroundColor = 'red'      // e是形参也就没有e.target,所以这里会报错
      }else {
        e.target.style.backgroundColor = ''
      }
    }


目录
相关文章
|
消息中间件 Java 应用服务中间件
|
安全 Java 程序员
|
运维 监控 Cloud Native
《云原生架构容器&微服务优秀案例集》——02 汽车/制造——极氪汽车 APP全面升级云原生技术架构,高效提升用户出行体验
《云原生架构容器&微服务优秀案例集》——02 汽车/制造——极氪汽车 APP全面升级云原生技术架构,高效提升用户出行体验
564 0
|
安全 前端开发 数据安全/隐私保护
企业如何借助码匠,实现员工核酸提醒?
众所周知,疫情当前,常态化核酸是我们必须遵守的防疫政策,因此码匠搭建了一个核酸提醒应用。
540 0
企业如何借助码匠,实现员工核酸提醒?
|
区块链
区块链技术公司区块链最有价值的东西是什么?
区块链项目开发找我,请留言
1497 0
|
5天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
16天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1317 5
|
3天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。