首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用vee-validate验证所有的引用?

如何使用vee-validate验证所有的引用?
EN

Stack Overflow用户
提问于 2020-03-15 15:44:11
回答 2查看 210关注 0票数 0

我有需要验证的动态组件。

我有一个数组,我把我的组件推到那里。for循环运行得很好。

代码语言:javascript
复制
    validateForm() {
      const PROMISES = [this.$refs.contactDetailsForm.$refs.contactDetails]
      for (let i = 1; i <= this.count; i++) {
        PROMISES.push(this.$refs[`passengerForm${i}`][0])
      }


      return Promise.all(PROMISES)
    },

但问题是我不知道如何返回验证的结果。我想在另一个函数(Promise)中得到这个函数的结果。我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2020-03-15 16:45:51

这就是解决方案:

代码语言:javascript
复制
    validateForm() {
      const PROMISES = [this.$refs.contactDetailsForm.$refs.contactDetails]
      for (let i = 1; i <= this.count; i++) {
        PROMISES.push(this.$refs[`passengerForm${i}`][0])
      }

      return new Promise((resolve, reject) => {
        PROMISES.forEach(async (item) => {
          const STATUS = await item.validate()
          STATUS ? resolve(STATUS) : reject(STATUS)
        })
      })
    }
票数 0
EN

Stack Overflow用户

发布于 2020-03-17 01:03:02

未经测试,但Promise.all返回promises的结果数组。您需要做的是对您想要知道结果的所有事情进行触发器验证,收集这些承诺,然后在Promise.all中检查结果。你没有给出足够的代码来完整地回答这个问题,但它是这样的:

代码语言:javascript
复制
validateForm() {
  //both of these I added validate() to because I'm hoping they are references to ValidationObservers
  const PROMISES = [this.$refs.contactDetailsForm.$refs.contactDetails.validate()]
  for (let i = 1; i <= this.count; i++) {
    PROMISES.push(this.$refs[`passengerForm${i}`][0].validate())
  }

  return Promise.all(Promises);
}

然后无论你在哪里调用它,你都会这样做:

代码语言:javascript
复制
this.validateForm().then((values) => {
    this.formIsValid = values.every((result) => result));
    //if the things above are ValidationProviders rather than VO, you have to use result.valid instead of result
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60690717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档