我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue+ElementUI怎么处理超大表单

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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,并在对应组件中删除相应的属性和方法即可

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

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

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue+ElementUI怎么处理超大表单

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

下载Word文档

猜你喜欢

Vue+ElementUI怎么处理超大表单

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

vue elementUI怎么处理文件批量上传

这篇文章主要介绍了vue elementUI怎么处理文件批量上传的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue elementUI怎么处理文件批量上传文章都会有所收获,下面我们一起来看看吧。element
2023-06-30

怎么处理​PHP 表单

今天就跟大家聊聊有关怎么处理PHP 表单,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先我们先写一个form表单:form.html 文件代码如下:
2023-06-15

Vue怎么使用ElementUI对表单元素进行自定义校验

今天小编给大家分享一下Vue怎么使用ElementUI对表单元素进行自定义校验的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
2023-07-05

Mysql怎么处理大数据表

这篇文章主要介绍“Mysql怎么处理大数据表”,在日常操作中,相信很多人在Mysql怎么处理大数据表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql怎么处理大数据表”的疑惑有所帮助!接下来,请跟着小编
2023-03-19

ASP中怎么处理表单提交的数据

在ASP中处理表单提交的数据可以通过以下步骤:在HTML表单中使用标签将需要提交的数据包裹起来,并设置method属性为post或get,以指定数据的提交方式。在ASP页面中使用Request.Form对象或Request.Qu
ASP中怎么处理表单提交的数据
2024-04-03

js前端表单数据处理和校验怎么实现

这篇文章主要介绍了js前端表单数据处理和校验怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇js前端表单数据处理和校验怎么实现文章都会有所收获,下面我们一起来看看吧。1.数据处理当表单在视图所展示的数据并
2023-07-02

mysql大表在不停机的情况下增加字段该怎么处理

MySQL中给一张千万甚至更大量级的表添加字段一直是比较头疼的问题,遇到此情况通常该如果处理?本文通过常见的三种场景进行案例说明。1、 环境准备数据库版本: 5.7.25-28(Percona 分支)服务器配置:  3台centos 7虚拟机,配置均为2CPU
mysql大表在不停机的情况下增加字段该怎么处理
2017-07-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录