vuejs2 - Vue中如何为导入的组件添加点击功能
问题描述
所以我有一个 Vue2 应用程序。我创建了一个组件“u-button”
当我导入它并在另一个组件中使用它时,我希望能够向它添加点击功能。然而,目前它在 u-button 组件而不是它正在使用的组件上寻找一个功能。
例如,在下面如果我点击第一个按钮没有任何反应,如果我点击第二个按钮我会得到控制台日志。
<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>
但是,如果我在 u-button 组件上添加一个方法,那么它会调用它。那么我怎样才能让我的下面的例子工作呢?我唯一能想到的就是将它包装在另一个 div 中并向其中添加点击功能。但我想知道是否有更好的方法?我也不想使用事件来做到这一点,因为这很快就会变得混乱。
正如您可以想象的那样,拥有一个可重复使用的按钮,单击该按钮时总是执行相同的功能,这有点毫无意义。
解决方案
这是因为组件的性质,例如,如果我们有一个(虚拟)iframe 组件,其中有一个按钮,我们想检测click
它上面的事件,我们可能会命名事件 click 并在父组件中监听它;因此,Vue 在 Vue 中引入了一个称为事件修饰符的功能,我们有修饰符(您可以在此处.native
阅读有关 Vue 修饰符的更多信息)
现在,为了让你的代码工作,你应该像这样添加一个.native
after @click
:
<u_button @click.native="clicked">Click me</u_button>
顺便说一句,最好为自己制定一个命名约定,当您的项目变得更大时它会变得很方便。
推荐阅读
- reactjs - 将依赖项从 index.html 重定位到 package.json
- dart - 测试:使用 Mocks 对 reauthenticateWithCredential 难度进行存根
- javascript - 在反应中使用自定义钩子时如何为文本输入设置初始值?
- python - 当我使用基于类的视图时检查响应 - Django
- javascript - 向客户地址编辑页面添加验证
- php - Laravel 函数查询()“分页不存在”
- android - 在 Okhttp3 上使用 HttpURLConnection 有什么好处吗?
- c# - 关于特殊字符处理
- ravendb - RavenDB 嵌入式许可证未注册
- c# - 如何从 ASP.Net 核心中的 PostgreSQL 函数获取数据