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

如何在Vugu的vgform:Select上注册选择/点击事件监听器?

Vugu vgform:Select 绑定选择变化事件的正确方式

针对你遇到的vgform:Select组件无法通过原生DOM事件(如@click/@change)监听选择变化的问题,核心原因是vgform:Select是Vugu封装的自定义组件,原生DOM事件不会直接透传,推荐以下两种实现方式:

方式一:监听绑定变量的变化

由于vgform:Select已经和c.clientId做了双向绑定,选择变化时会自动更新该变量,你可以通过Vugu的Watch机制监听变量变更:

在组件的Init方法中添加监听逻辑:

func (c *YourComponent) Init(ctx vugu.InitCtx) {
    // 监听clientId的变化,值改变时触发回调
    ctx.Watch(&c.clientId, func(oldVal, newVal string) {
        c.handleClientChanged()
    })
}

对应的处理方法:

func (c *YourComponent) handleClientChanged() {
    // 这里编写选择变化后的业务逻辑
}

方式二:使用组件专属的OnChange回调属性

vgform:Select组件本身提供了OnChange属性用于绑定选择变化回调,直接在模板中绑定即可:

修改后的模板代码:

<vgform:Select class="form-control"
       :Value='vgform.StringPtrDefault(&c.clientId, c.defaultClientId())'  
       :Options='c.clientOptions.Title()'
       :OnChange='func(newVal string) { c.handleClientChanged(newVal) }'>
</vgform:Select>

对应的处理方法可以接收新选中的值:

func (c *YourComponent) handleClientChanged(newVal string) {
    // 基于新选中的值处理业务逻辑
}

注意:自定义组件的回调属性需要用:OnChange(带冒号的属性绑定语法),而非@onchange(原生DOM事件绑定语法),这是你之前尝试失败的关键原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 20:42:56