代码之家  ›  专栏  ›  技术社区  ›  Frank Vel

在Vue中分解自定义按钮

  •  0
  • Frank Vel  · 技术社区  · 6 年前

    .html文件

    <div id="app1">
        <button
        v-for="(button, index) in buttons"
        v-bind:key="button"
        v-on:click="buttonClick(index)"
        >
        {{ button }}
        </button>
    </div>
    

    const app1 = new Vue({
        el: '#app1',
        data: { buttons: ['A', 'B', 'C', ] },
        methods: { buttonClick: (i) => console.log(i) },
    })
    

    单击按钮时,相应的索引将记录到控制台。

    我想通过创建一个自定义按钮组件来重构它,所以我试图将其更改为

    .html文件( *

    <div id="app2">
        <custom-button
        v-for="(button, index) in buttons"
        v-bind:key="button"
        v-on:click="buttonClick(index)"
    *   v-bind:content="button",
        >
        {{ button }}
        </custom-button>
    </div>
    

    .js公司

    Vue.component('custom-button', {
        props: ['content'],
        template: '<button> {{ content }} </button>'
    })
    

    (除 '#app1' 是现在 '#app2'

    单击这些按钮时,不会调用任何函数(按钮甚至没有事件侦听器)。所以这种方法显然行不通,所以我想知道正确的方法是什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sergeon    6 年前

    在自定义组件上使用本机事件时,需要 native

    <div id="app2">
        <custom-button
        v-for="(button, index) in buttons"
        v-bind:key="button"
     *  v-on:click.native="buttonClick(index)"
        v-bind:content="button",
        >
        {{ button }}
        </custom-button>
    </div>
    

    This is the page of the docs 正在解释此功能。