NO.08--VUE之自定义组件添加原生事件

本文介绍Vue中自定义组件的原生事件绑定问题及解决方法。通过使用.native修饰符,可以实现在自定义组件中正确绑定点击事件,改变元素样式。

前几篇给大家分享了我的业余的“薅羊毛”的经历,回归正题,讲回vue吧:

许多vue新手在工作开发中会遇到一个问题,直接使用 button 添加原生事件是没有问题的,但是使用自定义组件添加原生事件时,就会发现添加不上。比如我写了两个 button,一个点击让 div 变红,一个点击让 div 变蓝。

App.vue文件

<template>
  <div id="app">
    <button @click="changeRed">变红</button>
    <!-- 使用 Btn 组件  并添加原生事件 -->
    <Btn @click="changeBlue"></Btn>
    <div :class="box"></div>
  </div>
</template>

<script>
// 引入 Btn 这个组件
import Btn from './assets/components/Btn.vue'
export default {
  name: 'app',
  data () {
    return {
      box: 'yellow'
    }
  },
  methods: {
    changeRed(){
      this.box = 'red'
    },
    changeBlue(){
      this.box = 'blue'
    }
  },
  // 组件 注册
  components: {
    Btn
  }
}
</script>

<style>
.yellow{
  width: 200px;
  height: 200px;
  background: #ff0;
}
.red{
  width: 200px;
  height: 200px;
  background: #f00;
}
.blue{
  width: 200px;
  height: 200px;
  background: #00f;
}
</style>

Btn.vue 文件

<template>
    <div class="btn">
        <button>变蓝</button>
    </div>
</template>

 

 
点击变色.gif

会发现 Btn 的绑定事件无效。其实 vue 官方是有提供对应的方法的, 给组件绑定原生事件,就是在自定义组件 Btn 的原生事件后面加个 .native 后缀就好了。

 

App.vue文件

<template>
  <div id="app">
    <button @click="changeRed">变红</button>
    <!-- 使用 Btn 组件  并添加事件 -->
    <Btn @click.native="changeBlue"></Btn>
    <div :class="box"></div>
  </div>
</template>

效果:


 
点击变色-1.gif

转载于:https://www.cnblogs.com/cb-bin/p/8734330.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值