广告
返回顶部
首页 > 资讯 > 精选 >Vue+ElementUI怎么处理超大表单
  • 207
分享到

Vue+ElementUI怎么处理超大表单

2023-06-25 17:06:47 207人浏览 八月长安
摘要

Vue+ElementUI怎么处理超大表单,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。最近公司由于业务的调整,之前的超长表单的逻辑改动较多,所以我就打算重构了

Vue+ElementUI怎么处理超大表单,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

最近公司由于业务的调整,之前的超长表单的逻辑改动较多,所以我就打算重构了(之前是一个已离职的后台写的,也没有注释,一个组件写了4000+行,实在有心无力)。为了各位方便阅读,我这里把项目里拆分了14个组件进行了精简。

整体思路

  • 大表单根据业务模块进行拆分

  • 保存时使用el-fORM提供的validate方法进行校验(循环对每一个拆分的组件进行校验)

  • mixin 对每个组件的公共提取(也利于后期项目的维护)

开始

  • 这里以拆分2个组件为例:form1, form2(方便读者观看,命名勿喷)

  • 这里两个组件为什么ref、model绑定的都是form后边会进行说明(为了方便后期维护)

// form1 组件<template>    <el-form      ref="form"      :model="form"      label-width="10px"    >      <el-form-item label="姓名" prop="name">          <el-input v-model="form.name" />      </el-form-item>    </el-form></template><script>export default {  name: 'Form1',    props: {      form: {}  },  data() {    return {      rules: {        name: [          { required: true, message: '请输入姓名', trigger: 'blur' }        ]      }    }  },  methods: {    // 这里是是为了父组件循环调用校验    validForm() {        let result = false        this.$refs.form.validate(valid => valid && (result = true))        return result    }    // 我这里还用了另一种方式写的,但是循环校验的时候是promise对象,有问题,望大佬们指点一二    validForm() {        // 明明这里输出的结构是 Boolean 值,但在父组件循环调用之后就是promise类型,需要转换一下才行        return this.$refs.form.validate().catch(e => console.log(e))    }  }}</script>// form2 组件<template>    <el-form      ref="form"      :model="form"      label-width="10px"    >      <el-form-item label="年龄" prop="age">          <el-input v-model="form.age" />      </el-form-item>    </el-form></template><script>export default {  name: 'Form2',  props: {      form: {}  },  data() {    return {      rules: {        name: [          { required: true, message: '请输入年龄', trigger: 'blur' }        ]      }    }  },  methods: {    // 这里是是为了父组件循环调用校验    validForm() {        let result = false        this.$refs.form.validate(valid => valid && (result = true))        return result    }  }}</script>
  • 看一下父组件怎么引用的

// 父组件<template>    <div class="parent">        <form1 ref="form1" :form="formData.form1" />        <form2 ref="form2" :form="formData.form2" />        <el-button type="primary" @click="save">报错</el-button>    </div></template><script>... 省略引用export default {    name: 'parent',    ... 省略注册    data () {        return {            formData: {                form1: {},                form2: {}            }        }    },}</script>
  • 由于formData里的属性名form1form2分别用在子表单组件的ref上,因此可以在遍历时依次找到他们,修改保存函数,代码如下:

methods: {    save () {        // 每个表单对象的 key 值,也就是每个表单的 ref 值        const formKeys = Object.keys(this.formData)        // 执行每个表单的校验方法        const valids = formKeys.map(item => this.$refs[item].validForm())        // 所有表单通过检验之后的逻辑        if (valids.every(item => item)) {          console.log(11)        }    }}

解答为什么两个组件ref、model绑定的都是form

  • 通过对比我们可以发现form1 form2有共同的 props methods

  • 我们通过 mixin 提取一下

export default {  props: {    form: {      required: true,      type: Object,      default: () => {}    },  },  methods: {    validForm () {      let result = false      this.$refs.form.validate(valid => valid && (result = true))      return result    }  }}
  • form1 form2 中引用该minix,并在对应组件中删除相应的属性和方法即可

  • 超大表单解决起来很麻烦,这里只是对组件的拆分

  • 组件之间的联动也是一大难点,等下次整理完再发出来

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: Vue+ElementUI怎么处理超大表单

本文链接: https://www.lsjlt.com/news/306220.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue+ElementUI怎么处理超大表单
    Vue+ElementUI怎么处理超大表单,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。最近公司由于业务的调整,之前的超长表单的逻辑改动较多,所以我就打算重构了...
    99+
    2023-06-25
  • Vue+ElementUI怎么处理超大表单实例讲解
    最近公司由于业务的调整,之前的超长表单的逻辑改动较多,所以我就打算重构了(之前是一个已离职的后台写的,也没有注释,一个组件写了4000+行,实在有心无力)。为了各位方便阅读,我这里把...
    99+
    2022-11-12
  • Vue中怎么利用ElementUI实现表单动态渲染
    本篇文章为大家展示了Vue中怎么利用ElementUI实现表单动态渲染,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。{  "inline&quo...
    99+
    2022-10-19
  • vue elementUI怎么处理文件批量上传
    这篇文章主要介绍了vue elementUI怎么处理文件批量上传的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue elementUI怎么处理文件批量上传文章都会有所收获,下面我们一起来看...
    99+
    2023-06-30
  • Vue怎么使用ElementUI对表单元素进行自定义校验
    今天小编给大家分享一下Vue怎么使用ElementUI对表单元素进行自定义校验的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2023-07-05
  • 怎么处理​PHP 表单
    今天就跟大家聊聊有关怎么处理PHP 表单,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先我们先写一个form表单:form.html 文件代码如下:<html><...
    99+
    2023-06-15
  • Mysql怎么处理大数据表
    这篇文章主要介绍“Mysql怎么处理大数据表”,在日常操作中,相信很多人在Mysql怎么处理大数据表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql怎么处理大数据表”...
    99+
    2023-03-19
    mysql
  • ajax中怎么异步处理POST表单中的数据
    ajax中怎么异步处理POST表单中的数据,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。//防止页面进行跳转 $(docum...
    99+
    2022-10-19
  • js前端表单数据处理和校验怎么实现
    这篇文章主要介绍了js前端表单数据处理和校验怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇js前端表单数据处理和校验怎么实现文章都会有所收获,下面我们一起来看看吧。1.数据处理当表单在视图所展示的数据并...
    99+
    2023-07-02
  • PHP怎么处理表单数据?页面跳转方法分享
    PHP是一种流行的服务器端编程语言,不仅可以用于开发动态网站,还可以用于处理用户提交的表单数据。在PHP中,跳转页面是一个十分常见的操作,可以通过使用header函数实现。本文将介绍如何在PHP中处理表单数据,并实现表单页面跳转和页面跳转功...
    99+
    2023-05-14
    跳转页面 php
  • Vue.js中怎么将事件处理器与表单控件进行绑定
    Vue.js中怎么将事件处理器与表单控件进行绑定,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。事件监听及方法处理1.简单的可以直接内嵌在页...
    99+
    2022-10-19
  • mysql大表在不停机的情况下增加字段该怎么处理
    MySQL中给一张千万甚至更大量级的表添加字段一直是比较头疼的问题,遇到此情况通常该如果处理?本文通过常见的三种场景进行案例说明。 1、 环境准备 数据库版本: 5.7.25-28(Percona 分支) 服务器配置:  3台ce...
    99+
    2017-07-15
    mysql大表在不停机的情况下增加字段该怎么处理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作