美文网首页
自定义组件和原生组件加事件的问题

自定义组件和原生组件加事件的问题

作者: your_own_king | 来源:发表于2018-08-30 07:47 被阅读0次

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

    App.vue文件
    <template>
    <div id="app">
    <button @click="changeRed">变红</button>

    <Btn @click="changeBlue"></Btn>
    <div :class="box"></div>
    </div>
    </template>

    <script>

    <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>
    
    

    效果:


    点击变色 (2).gif

    相关文章

      网友评论

          本文标题:自定义组件和原生组件加事件的问题

          本文链接:https://www.haomeiwen.com/subject/gzglpftx.html