处理表单嵌套循环多个表单子组件校验提交方案,适用所有提交父组件循环嵌套多个子组件表单

文章讲述了在Vue应用中,如何处理父组件通过循环嵌套子组件的表单校验问题,特别是当子组件异步提交时,如何确保父组件获取到最新的校验结果。作者提供了使用延时器、Watcher监听和Promise返回校验结果的方法.
摘要由CSDN通过智能技术生成

表单嵌套循环多个相同表单(父组件循环嵌套多个子组件表单)校验,使用循环form时,由于子组件提交异步问题,父组件不能获取最新正确的返回结果

  this.$refs.children.validate().then(() => {
                    this.rowObj.validate = true;
                    console.log( this.rowObj.validate,"子组件校验不通过",this.rowIndex);
                   
                    }).catch(() => {
                    this.rowObj.validate = false;
                    console.log( this.rowObj.validate,"子组件校验不通过");
                    });

1.提交的地方使用延时器处理异步获取正确的结果。

2.使用 Watcher 监听数据变化: 在父组件中使用 Watcher 监听子组件传递的校验结果数据,一旦数据变化就执行相应的操作返回结果。

javascript
// 在父组件中
watch: {
  'formList.form1.validate'(newValue, oldValue) {
    // 当校验结果数据发生变化时执行相应操作
    console.log(newValue, '校验结果变化');
    // 执行其他操作
  }
}

3.使用 Promise 返回数据: 子组件向父组件传递校验结果时,可以返回一个 Promise 对象,在 Promise 对象中 resolve 传递校验结果数据。父组件通过 .then() 方法获取校验结果数据,确保在获取数据时是最新的。

javascript
// 子组件中
toSubmit(e) {
  return new Promise((resolve, reject) => {
    // 执行校验逻辑
    if (校验通过) {
      resolve(true); // 校验通过
    } else {
      resolve(false); // 校验不通过
    }
  });
}

// 父组件中
submit() {
  this.$refs.form2.validate().then(res => {
    this.rowObj.validate = true;
  }).catch(errors => {
    this.rowObj.validate = false;
  });

  this.$refs.childComponent.toSubmit().then(result => {
    console.log(result, '校验结果');
    // 执行其他操作
  });
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值