将点击处理程序添加到引用?

pan*_*hro 4 vue.js vuejs2

我正在使用 3rd 方包,但需要添加一小段交互。

该包有一个按钮,参考为“next”。无论如何要向此引用添加点击处理程序?

Kra*_*inh 7

这可能有帮助:

public mounted() {
    const next = this.$refs.next as HTMLElement;
    next.addEventListener('click', this.onNextClick, false);
}

public onNextClick() {
    // do your stuff here
}
Run Code Online (Sandbox Code Playgroud)


Jak*_*ski 7

我遇到了这个问题,正在寻求类似问题的解决方案。然而我的情况是ref在 Vue 组件对象上设置了一个属性。在引用的对象上使用 simple 时addEventListener出现错误:

addEventListener 不是函数

$el解决方案是在引用组件的属性(即实际的 HTML 元素)上调用该函数。

this.$refs.next.$el.addEventListener('click', function() {
  /* do stuff here*/
}, false);
Run Code Online (Sandbox Code Playgroud)

从之前答案的评论中我发现OP也可能是这种情况。


Dan*_*iel 1

像这样的东西:

this.$refs.next.addEventListener('click', function() {
  /* do stuff here*/
}, false);
Run Code Online (Sandbox Code Playgroud)

  • 这里需要回答一些关于代码结构的问题。`this` 可能会也可能不会起作用,具体取决于组件层次结构中附加了 `ref` 属性的位置。在看不到结构的情况下,您得到的最好建议是进行一些调试并尝试找出 ref 存储在哪个组件下。如果您尝试与之交互的组件位于您正在使用上述代码段的组件中,则 @Daniel 的建议是正确的。 (2认同)