我有一个重要的组件,我想把一个事件监听器附加到button元素,它的类是qkb-bubble-btn
。
我明白我应该把它放在mounted
部分,但我得到以下错误:
TypeError: Cannot read properties of undefined (reading 'getElementsByClassName')
下面是我添加监听器的方法:
<script>
import {VueBotUI} from 'vue-bot-ui'
import {subscribeUser} from "../helpers/subscriptionHandler";
//import {getAlerte} from "../helpers/alerteHandler";
export default {
//...
mounted() {
this.document.getElementsByClassName('qkb-bubble-btn ')[0].addEventListener('click', this.onBubbleClick);
},
beforeDestroy () {
navigator.serviceWorker.removeEventListener('message', event => {
this.printPush(event);
});
this.document.getElementsByClassName('qkb-bubble-btn ')[0].removeEventListener('click', this.onBubbleClick);
},
methods: {
onBubbleClick(){
console.log("click bubble")
}
},
}
</script>
如何将点击事件监听器添加到qkb-bubble-btn
元素中?
您不需要自己添加事件侦听器,
您只需使用@
和按钮上的事件名称:
<my-button @click="myClickMethod"/>
只有当元素在vue应用程序外部时才使用addEventListener,但如果它在应用程序内部,那么最好使用vue的方式
如果按钮位于另一个组件中,则需要使用$emit:
<my-button @click="$emit('click', $event)"/>
即使@lk77是正确的,我也可以通过删除this.document...
前面的关键字this
来解决我的问题