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

Velo中监听Repeater内表单提交成功并执行动作的方法

解决Velo Repeater内表单提交完成后的动作触发问题

Velo 没有全局的onFORMSUBMITTED事件,你需要通过表单submit()方法的Promise特性来监听提交完成(包括文件上传)的状态,结合Repeater的onItemReady事件处理每个重复项内的表单逻辑,具体实现如下:

  1. 绑定Repeater的项初始化事件
    每个Repeater项加载完成时,获取当前项内的表单和提交按钮,绑定点击事件。

  2. 利用submit()的Promise处理提交完成
    表单的submit()方法会返回一个Promise,当所有内容(包括文件上传)提交成功后,Promise会resolve,此时即可执行你需要的后续动作。

示例代码:

$w.onReady(function () {
  // 监听Repeater项加载完成事件
  $w("#repeater1").onItemReady(($item, itemData, index) => {
    // 获取当前重复项内的表单和提交按钮
    const form = $item("#form1");
    const submitBtn = $item("#submitButton");

    submitBtn.onClick(async () => {
      try {
        // 提交表单,等待文件上传和提交完成
        await form.submit();
        // 提交成功后执行自定义动作
        console.log(`表单 ${index + 1} 提交完成,执行后续操作`);
        // 这里添加你需要执行的代码,比如更新页面数据、显示成功提示等
      } catch (error) {
        // 处理提交失败的情况
        console.error("表单提交失败:", error);
      }
    });
  });
});

注意事项:

  • 不要使用表单的onSubmit事件,该事件是在提交流程开始时触发,而非提交完成时。
  • 必须通过$item获取Repeater项内的组件,确保操作的是当前项的表单和按钮,避免混淆不同项的组件。
  • submit()的Promise会自动等待文件上传完成,无需额外监听文件上传状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:12:42