vue3.0中使用element UI表单遍历校验问题解决

 更新时间:2022年04月01日 09:04:01   作者:saligia28  
本文主要介绍了vue3.0中使用element UI表单遍历校验问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

问题

在使用vue3.0写项目的时候遇到一个需要遍历的表单,可以增加删除表单对象

不考虑校验问题的话,就是简单的数组包form对象。涉及校验的时候,按照以往的写法就是绑定ref值,然后调用组件的validate方法【form表单中配置rule规则】。

解决方法就是将数组内嵌在一个对象中,对象的结构跟我们定义的form对象结构一致

//我们需要遍历的form对象数组
const arr = [
    {
        name:'',
        sex:'',
        age:'',
    },{
        name:'',
        sex:'',
        age:'',
    }
]
//处理后的对象
const afterForm = {
    name:'',
    sex:'',
    age:'',
    child:arr,//这里的arr就是我们需要遍历的数组【这个key值可以随便取,不一定非得是‘child',尽量不要出现歧义就好】
}

然后就是html中的dom结构写法

<el-dialog v-model="addPageVisible" width="1000px" title="新增页面参数配置" @closed="closeDialog">
      <el-form :model="form" label-width="120px" :inline="true" ref="ruleFormRef" :rules="rules">
        <el-card v-for="(item, index) in form.child" :key="index" shadow="hover" class="mb20">
          <el-form-item label="页面名称:" :prop="`child[${index}].pageName`" :rules="rules.pageName">
            <el-input v-model.trim="item.pageName" class="length-limit"></el-input>
          </el-form-item>
          <el-form-item label="页面路由:" :prop="`child[${index}].routerName`" :rules="rules.routerName">
            <el-input v-model.trim="item.routerName" class="length-limit"></el-input>
          </el-form-item>
          <el-form-item label="页面类型:" :prop="`child[${index}].businessType`" :rules="rules.businessType">
            <el-select v-model.trim="item.businessType" class="length-limit">
              <el-option
                v-for="item in bussinessOptions"
                :value="item.value"
                :label="item.label"
                :key="item.value"
              ></el-option>
            </el-select>
          </el-form-item>
          <div class="pageManage__dialog-foot">
            <el-button type="primary" round @click="addNewForm" v-if="index === allForm.length - 1"
              >新增配置表单</el-button
            >
            <el-button round :disabled="allForm.length === 1 && index === 0" @click="deleteForm(index)"
              >删除表单</el-button
            >
          </div>
        </el-card>
      </el-form>
      <template #footer>
        <span class="dialog-footer">
          <el-button round @click="addPageVisible = false">取 消</el-button>
          <el-button round type="primary" @click="submitNewPage">提交</el-button>
        </span>
      </template>
    </el-dialog>
//这是我实际项目的页面,所以定义的参数名可能不太一样

写法上跟一般的form表达差不多,只是我们el-form绑定的model值应该是我们处理过的对象,主要有两个地方需要注意

el-form-item上面绑定的prop值应该写成 :prop="child[${index}].pageName",rules也要绑定到对应的值。

const rules = reactive({
      pageName: [{ required: true, message: '请输入页面名称', trigger: 'blur' }],
      routerName: [{ required: true, message: '请输入路由名称', trigger: 'blur' }],
      businessType: [{ required: true, message: '请选择页面类型', trigger: 'change' }],
    })

考虑到我们需要用的数组会有数量变化,可以直接用computed计算属性去得到处理后的数组

const form = computed(() => {
      return { pageName: 'string', routerName: 'string', businessType: 'string', child: allForm.value }
    })

然后就能成功了!!

总结

我自己的理解,就是将我们需要校验的值在一个伪造的form对象中处理,然后内层遍历的的真实form对象可以用指定值的方式去绑定校验规则。

到此这篇关于vue3.0中使用element UI表单遍历校验问题解决的文章就介绍到这了,更多相关element表单遍历校验内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何解决Vue3组合式API模式下动态组件不渲染问题

    如何解决Vue3组合式API模式下动态组件不渲染问题

    这篇文章主要介绍了如何解决Vue3组合式API模式下动态组件不渲染问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教<BR>
    2024-03-03
  • Vue组件系列开发之模态框

    Vue组件系列开发之模态框

    这篇文章主要介绍了Vue组件系列开发之模态框,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • 如何用vue封装axios请求

    如何用vue封装axios请求

    对axios进行封装以及将API接口按业务模块统一管理,有助于我们简化代码,方便后期维护。本文介绍了如何用vue封装axios请求,感兴趣的同学,可以参考下。
    2021-06-06
  • Vue实现Excel预览功能使用场景示例详解

    Vue实现Excel预览功能使用场景示例详解

    这篇文章主要为大家介绍了Vue实现Excel预览功能使用场景示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • 基于Vue实现拖拽效果

    基于Vue实现拖拽效果

    这篇文章主要介绍了基于Vue实现拖拽效果,文中给大家介绍了clientY pageY screenY layerY offsetY的区别讲解,需要的朋友可以参考下
    2018-04-04
  • vue-cli3 热更新配置操作

    vue-cli3 热更新配置操作

    这篇文章主要介绍了vue-cli3 热更新配置操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • antd vue中,如何在form表单中的自定义组件使用v-decorator

    antd vue中,如何在form表单中的自定义组件使用v-decorator

    antd vue中,在form表单中的自定义组件使用v-decorator问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Vue.js 的过滤器你了解多少

    Vue.js 的过滤器你了解多少

    这篇文章主要为大家详细介绍了Vue.js 的过滤器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • vue树形控件tree的使用方法

    vue树形控件tree的使用方法

    这篇文章主要为大家详细介绍了vue树形控件tree的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • vue实现验证码输入框组件

    vue实现验证码输入框组件

    最近做项目遇到这样的需求要求输入4位或6位短信验证码,输入完成后收起键盘。实现步骤大家参考下本文
    2017-12-12

最新评论