Vue中如何绑定事件 传递参数

简介: Vue中如何绑定事件 传递参数

可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。

基础用法:

<div id="APP">
  <button v-on:click="add">添加</button>
  <p>您已购买 {{num}} 件</p>
</div>

:使用 v-on:xxx 绑定事件,其中 xxx 是事件名。事件函数 add 如果不需要传递参数,() 小括号可以省略不写。

const vm = new Vue({
  el: "#APP",
  data(){
    return {
      num: 0,
    }
  },
  methods:{
    add: function(){
      this.num++;
    },
  },
});

注:事件函数需要写在 methods 对象中,事件函数最终会在 vm 上。如果需要使用 data 中的数据,可以用 this.xxx 操作数据,其中 xxx 是数据名。

v-on 指令简写【常用方式】

<div id="APP">
  <button @click="add">添加</button>
  <p>您已购买 {{num}} 件</p>
</div>

:v-on: 可以简写为 @ 符。变为 @xxx 绑定事件,其中 xxx 是事件名。

const vm = new Vue({
  el: "#APP",
  data(){
    return {
      num: 0,
    }
  },
  methods:{
    add(){
      this.num++;
    },
  },
});

:事件的回调可以简写为 add(){ } 的形式,与之效果相同。

事件函数中的 this

事件函数中的 this 默认指向 vm ,也就是 Vue 实例对象 或者 组件实例对象。

<div id="APP">
  <button @click="add">添加</button>
  <p>您已购买 {{num}} 件</p>
</div>
const vm = new Vue({
  el: "#APP",
  data(){
    return {
      num: 0,
    }
  },
  methods:{
    add(){
      console.log(this); // Vue
      this.num++;
    },
  },
});

:data 中的数据相当于都在 Vue 实例上,而 this 又指向 Vue 实例,所以我们才能通过 this.num 操作 data 中的 num 数据。

另外注意 methods 中配置的函数,不要用箭头函数!否则 this 就不是 Vue 实例了。

<div id="APP">
  <button @click="add">添加</button>
  <p>您已购买 {{num}} 件</p>
</div>
const vm = new Vue({
  el: "#APP",
  data(){
    return {
      num: 0,
    }
  },
  methods:{
    add:() => {
      console.log(this); // window
      this.num++;
    },
  },
});

:现在的 this 指向 window ,而 window 中没有 num 这个数据,所以 this.num++ 不会发生任何变化。一定不要使用箭头函数!不要使用箭头函数!不要使用箭头函数!

事件对象 Event

<div id="APP">
  <button @click="add">添加</button>
  <p>您已购买 {{num}} 件</p>
</div>
const vm = new Vue({
  el: "#APP",
  data(){
    return {
      num: 0,
    }
  },
  methods:{
    add(e){
      console.log(e.target); // <button>添加</button>
      this.num++;
    },
  },
});

:在不传递参数时,可以直接接收 event 事件对象。

原创作者:吴小糖

创作时间:2023.2.23

相关文章
|
25天前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
27天前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
1天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
25天前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
22 1
|
25天前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
27 1
|
25天前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
25天前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
|
7月前
|
JavaScript API
【vue实战项目】通用管理系统:api封装、404页
【vue实战项目】通用管理系统:api封装、404页
77 3
|
7月前
|
人工智能 JavaScript 前端开发
毕设项目-基于Springboot和Vue实现蛋糕商城系统(三)
毕设项目-基于Springboot和Vue实现蛋糕商城系统
|
7月前
|
JavaScript Java 关系型数据库
毕设项目-基于Springboot和Vue实现蛋糕商城系统(一)
毕设项目-基于Springboot和Vue实现蛋糕商城系统
191 0