v-on:在 bootstrap-vue 中单击内容时单击按钮不工作

Posted

技术标签:

【中文标题】v-on:在 bootstrap-vue 中单击内容时单击按钮不工作【英文标题】:v-on:click not working on button when clicking it's content in bootstrap-vue 【发布时间】:2020-07-01 10:48:11 【问题描述】:

我在我的 vue 组件中创建了以下模板

                <b-button v-on:click="check($event)" class="btn btn-success" data-action="consent">
                    <b-icon-check></b-icon-check>
                </b-button>

但是,单击事件似乎仅在我单击按钮本身时才起作用,例如在图标周围的侧面,而不是在单击图标本身时。

我想知道是否有更好的方法来完成我想要实现的目标,而不是添加另一个 v-on:click 图标本身。

基本上我希望按钮触发点击事件,即使它的任何子元素被点击。

这里是函数检查(事件)

    methods:
        check(event)
            let action = event.target.getAttribute('data-action');
            if(action === 'consent')
                this.checked = true;
            
            else
                this.checked = false;
            
        
    ,

阅读 cmets 和修饰符链接后,我认为我的错误是假设 event.target 将成为按钮。相反,图标本身就是我的代码失败的原因。

【问题讨论】:

好像有什么东西阻止了图标冒泡到按钮,你能分享check方法的代码吗? 测试v-on的修饰符:vuejs.org/v2/guide/events.html#Event-Modifiers 我刚刚更新了问题,因为我认为该事件实际上正在触发但不起作用,因为我正在处理错误的 event.target。但我想知道为什么它也不会传播到按钮。 我测试了你的代码,点击图标确实触发了事件 您错过了data-action 的图标失败event.target.getAttribute('data-action')data-action="consent" 添加到&lt;b-icon-check&gt;&lt;/b-icon-check&gt; 【参考方案1】:

使用event.currentTarget.getAttribute('data-action') 从绑定事件侦听器的位置获取data* 属性。 event.currentTarget 将始终是事件侦听器绑定到的元素(而不是实际启动 click 事件的元素,这是 event.target 指向的元素)。

【讨论】:

我一定会尝试并回复你:) 是的,它是完美的。这就是我所需要的,非常感谢你

以上是关于v-on:在 bootstrap-vue 中单击内容时单击按钮不工作的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap-vue 分页导航不像教程中那样工作(单击页面时刷新)

为啥 bootstrap-vue 不渲染 onclick?

Nuxt/Vue/Bootstrap-vue 在滚动时收缩导航栏

使 div 在单击时会在短时间内改变颜色

无法绑定 v-on:单击 Vuetify [Vue 警告]:v-on 处理程序中的错误:“TypeError:handler.apply 不是函数”

将 v-for 与 v-on 一起使用:在 Vue 组件中单击