Vuejs2 如何向Vue中导入的组件添加单击功能

Vuejs2 如何向Vue中导入的组件添加单击功能,vuejs2,Vuejs2,所以我有一个Vue2应用程序。我已经创建了一个组件“u按钮” 当我导入它并在另一个组件中使用它时,我希望能够向它添加一个单击功能。然而,目前它在u按钮组件上寻找函数,而不是它正在使用的组件 例如,在下面的示例中,如果我单击第一个按钮,什么也不会发生,如果我单击第二个按钮,我会得到控制台日志 <template> <div> <u_button @click="clicked">Click me</u_button>

所以我有一个Vue2应用程序。我已经创建了一个组件“u按钮”

当我导入它并在另一个组件中使用它时,我希望能够向它添加一个单击功能。然而,目前它在u按钮组件上寻找函数,而不是它正在使用的组件

例如,在下面的示例中,如果我单击第一个按钮,什么也不会发生,如果我单击第二个按钮,我会得到控制台日志

<template>
    <div>
        <u_button @click="clicked">Click me</u_button>
        <button @click="clicked">Click me</button>
    </div>
</template>

<script>
    import u_button from '../components/unify/u_button'

    export default {
        components: {
            u_button
        },
        methods: {
            clicked() {
                console.log("Working!");
            }
        }
    }

</script>

点击我
点击我
从“../components/unify/u按钮”导入u按钮
导出默认值{
组成部分:{
u_按钮
},
方法:{
点击(){
console.log(“工作!”);
}
}
}
但是,如果我在u按钮组件上添加一个方法,那么它将调用该方法。那么,我怎样才能让我下面的例子起作用呢?我唯一能想到的就是将它包装到另一个div中,并将click函数添加到该div中。但我想知道是否有更好的方法??我也不想用事件来做这件事,因为它很快就会变得一团糟


您可以想象,如果单击一个可重复使用的按钮时总是执行相同的功能,这有点毫无意义。

这是因为组件的性质,例如,如果我们有一个(虚拟的)如果框架组件中有一个按钮,并且我们希望在其上检测
单击
事件,那么我们可以命名该事件并在父组件中侦听它;因此,Vue引入了一种称为事件修饰符的功能。例如,在Vue中,我们有
.native
修饰符(您可以阅读有关Vue修饰符的更多信息)

现在,要使代码正常工作,您应该在
@单击后添加
.native
,如下所示:

<u_button @click.native="clicked">Click me</u_button>
点击我

顺便说一句,最好为自己制定一个命名约定,当您的项目越来越大时,它会变得很方便。

这是因为组件的性质,例如,如果我们有一个(虚拟的)如果框架组件中有一个按钮,并且我们希望在其上检测
单击
事件,那么我们可以命名该事件并在父组件中侦听它;因此,Vue引入了一种称为事件修饰符的功能。例如,在Vue中,我们有
.native
修饰符(您可以阅读有关Vue修饰符的更多信息)

现在,要使代码正常工作,您应该在
@单击后添加
.native
,如下所示:

<u_button @click.native="clicked">Click me</u_button>
点击我
顺便说一句,最好为自己制定一个命名约定,当您的项目越来越大时,它会变得很方便。

使用
可能重复使用
可能重复使用