You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过代码触发按钮tap事件?调用$emit报错‘$emit is not a function’

解决方法
  • 直接调用绑定的处理函数
    既然按钮的@tap已经绑定了handleRetrieve方法,没必要绕弯子触发tap事件,直接在textchange函数里调用这个方法就行:

    this.handleRetrieve()
    

    这是最靠谱的方式,完全避开了操作组件实例或DOM的问题。

  • 触发原生DOM点击事件
    如果你的Button组件最终渲染成了原生<button>元素,或者你需要模拟真实的点击行为,可以尝试触发原生click事件:

    // 如果ref直接指向DOM元素
    this.$refs.btnRetrieve.click()
    // 如果ref指向组件实例,需要先获取底层DOM
    this.$refs.btnRetrieve.$el.click()
    
  • 排查ref指向的对象类型
    报错$emit is not a function说明你拿到的$refs.btnRetrieve不是Vue组件实例,可能是原生DOM元素。可以在textchange里打印console.log(this.$refs.btnRetrieve)看看它到底是什么,再针对性处理。

内容的提问来源于stack exchange,提问作者pb123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 14:23:11