vue element 动态生成表单

这篇具有很好参考价值的文章主要介绍了vue element 动态生成表单。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景:表单中的项是由后端返回的,不是前端提前定义好的。

      <el-form :model="form" ref="form" :rules="rules" v-if="configLabelData">
        <el-form-item
          v-for="(item, index) in configLabelData"
          :key="index"
          :label="item.name + ':'"
          label-width="120px"
          :prop="item.configKey"
        >
              <el-checkbox-group v-model="form[item.configKey]">
                <el-checkbox
                  v-for="(_item, _index) in item.values"
                  :key="_index"
                  :label="_item.value"
                  class="form-item"
                  >{{ _item.name }}
                  </el-checkbox>
              </el-checkbox-group>
        </el-form-item>
      </el-form>

需要注意的点:

1、因为表单上需要绑定v-model来获取此表单项的值,但是要绑的值名称是根据后端数据来的,所以请求回来后端的数据后再渲染整个表单,否则会报错【v-if="configLabelData"】,根据请求到的后端数据动态创建form中的属性

          // 请求后赋值【此时已经请求到了后端返回的数据configLabelData】
          // 动态往表单中添加对应属性及数据
          for (let i = 0; i < this.configLabelData.length; i++) {
            let value;
            // 根据后端返回的数据类型显示赋值不同的类型
            if (this.configLabelData[i].type === "radiobox") {
              // radiobox类型绑定的值是字符串
              //【row[xxx] || "表示:从表格中拿到值用来回显,若没有值则赋新的空值】
              value = row[this.configLabelData[i].configKey] || "";
            }
            // 创建表单项,用于绑定数据
            this.$set(this.form, this.configLabelData[i].configKey, value);
            this.$nextTick(() => {
              this.$refs["form"].clearValidate();
            });
          }

2、渲染多个checkbox或者radio时,label绑定值,{{}}中渲染名称,这样v-model拿到的数据可以直接传到后端

3、对动态生成的表单做校验,提前定义好各种数据类型的校验规则:

在data中定义了多选和单选的校验规则:

      radioValidator: [
        {
          required: true,
          message: "请选择其中一种",
          trigger: "change",
        },
      ],
      checkboxValidator: [
        {
          type: "array",
          required: true,
          message: "至少选择一种",
          trigger: "change",
        },
      ],

在第1步创建表单项的时候同时更新rules

          // 请求后赋值【此时已经请求到了后端返回的数据configLabelData】
          // 动态往表单中添加对应属性及数据
          for (let i = 0; i < this.configLabelData.length; i++) {
            let validatorType;
            // 根据后端返回的数据类型添加不同的校验规则
            if (this.configLabelData[i].type === "checkbox") {
              validatorType = this.checkboxValidator;
            } 
            // 创建表单项,用于绑定数据
             this.$set(this.rules, this.configLabelData[i].configKey, validatorType);
          }

举个例子~后端返回数据格式:

vue动态表单,element ui,vue,vue.js,element ui

 文章来源地址https://www.toymoban.com/news/detail-577566.html

到了这里,关于vue element 动态生成表单的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue + element-ui 循环生成指定form表单

    最近遇到一个需要超级写超级多字段的表单,初略计算大概四十来个吧字段吧,/(ㄒoㄒ)/~~,这也太麻烦了,想了想能不能简单封装一下,找到了个巨人,嗯哼,就踩一下吧 参考文章: Vue3.0 根据JSON对象生成指定form表单 上面文章是vue3的,逻辑都一样。以下是vue2 我的写法 注

    2024年02月11日
    浏览(57)
  • el-form 动态表单增减项 (vue+element ui)

    1、点击”+“,弹出弹窗,新增一项,点击”-“,删除当前项 代码展示: html代码: 注意: el-form-item(表单项)循环,绑定的数组写在form当中 表单: 新增参数弹框: data: methods: 1、点击新增,弹出新增弹窗,添加表单项 2、点击”-“,删除当前表单项

    2024年02月02日
    浏览(53)
  • Vue+Element-UI el-form表单动态检验

    业务需求: 表单el-form 有一表单项:发布时间 ,有5个选项:今天、24小时、近3天、近7天和自定义时间,其中当选择自定义时间时,后面跟着的日期时间选择器是必填的,选中其他选项时则不需要。这就需要做到表单的动态检验。 最开始实现方式是在当前表单项中设置规则

    2024年02月11日
    浏览(58)
  • html中使用Vue+element UI动态创建表单数据不显示问题

    直接上代码:html代码如下 我这里后台数据是模拟的,返回的数据格式:  理想的是页面创建时就向后台获取数据,然后将数据渲染在页面上,可是失败了,但是控制台也没有报错,只有单独绑定数据的ReportTitle渲染成功。      最后问了大佬才发现,因为我用的是Vue2,必须

    2024年02月15日
    浏览(53)
  • VUE element-ui实现表格动态展示、动态删减列、动态排序、动态搜索条件配置、表单组件化。

        1、本组件支持列表的表头自定义配置,checkbox实现 2、本组件支持列表列排序,vuedraggable是拖拽插件,上图中字段管理里的拖拽效果 ,需要的话请自行npm install 3、本组件支持查询条件动态配置,穿梭框实现 https://download.csdn.net/download/askuld/88216937

    2024年01月16日
    浏览(62)
  • vue+Element UI 实现动态表单(点击按钮增删表格及嵌套输入框的增删)(1)

    el-button size=“small” @click=“addTable”新增 el-button size=“small” @click=“delTable”删除 el-table ref=“table” :data=“tableDataBind.taAssessltems” tooltip-effect=“dark” border @selection-change=“selectRow” 规格: 重量: 数量: 加工费: el-button size=“mini” type=“primary” icon=“el-icon-circle-plus-ou

    2024年04月13日
    浏览(47)
  • Vue3+Element-Plus 实现用户列表页面的UI结构及动态加载表单功能 三一

    1.1 头部是一个面包屑 (Breadcrumb)导航区域 1.2 白色区域是一个卡片(Card)视图 1.3 卡片 (Card)视图中嵌套了   输入框(Input )、 按钮(Button)、 表单(Form)、分页(Pagination ) Breadcrumb 面包屑 | Element Plus (gitee.io) https://element-plus.gitee.io/zh-CN/component/breadcrumb.html  2.1.1 复制

    2023年04月09日
    浏览(59)
  • element-ui 动态表单

    背景:朋友入职新公司,做项目重构,根据后端返回表单内容,动态生成表单,于是自己实现了下,哪里写的不好,欢迎各位提建议: 因为开关和多选框默认值是非空字符串,所以在created生命周期单独处理了下

    2024年02月11日
    浏览(86)
  • element-ui动态表单和验证

    在使用element-ui开发中,经常会用到对动态创建的表单进行字段验证,比如新增多个类似卡片的表单,里面的字段需要做验证,此时就要使用到动态表单验证,官方文档写的有示例,但是不够清晰。除了官方示例,还可以使用循环生成多个form实现该需求。 第一种官方示例:一

    2024年02月02日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包