首页 > 其他分享 >vue 动态表单

vue 动态表单

时间:2024-06-03 11:13:00浏览次数:20  
标签:vue text 表单 raw key var 动态 data

一、动态表单

  1. 数据集

    1、原始数据集

    var json = "
    [
       {
          \"key\":\"id\",
          \"text\":\"id\"
       },
       {
          \"key\":\"name\",
          \"text\":\"姓名\"
       },
       {
          \"key\":\"age\",
          \"text\":\"年龄\"
       }
    ]";
    

    2、表单数据集

    var data = JSON.parse(json);
    
    // 遍历数据
    data.forEach((element) => {
    
       // vue data 
       this.fromData.push({
          field: element.key,
          text: element.value,
          value: null,
       });
    });
    
  2. 渲染表单

    <template>
       <el-dialog :title="form" visible="true">
          <el-form
             ref="dataForm"
             :rules="rules"
             :model="formData"
             label-position="left"
             label-width="70px"
             style="width: 400px; margin-left: 50px"
          >
             <el-form-item
             v-for="item in formData"
             :key="item.field"
             :prop="item.field"
             :label="item.text"
             >
             <el-input v-model="item.value" :id="item.key" />
             </el-form-item>
          </el-form>
          <div slot="footer" class="dialog-footer">
             <el-button @click="dialogFormVisible = false"> 取消 </el-button>
             <el-button type="primary" @click="createData()"> 确定 </el-button>
          </div>
       </el-dialog>
    </template>
    
  3. 表单提交

    createData() {
       // 接收数据
       var raw = {};
    
       // 遍历数据
       this.formData.forEach((item) => {
         raw[item.field] = item.value;
       });
    
       // 打印数据
       console.log(raw);
     },
    
  4. 完整代码

    <template>
       <!--对话框-->
       <el-dialog :title="form" visible="true">
    
          <!--表单-->
          <el-form
             ref="dataForm"
             :rules="rules"
             :model="formData"
             label-position="left"
             label-width="70px"
             style="width: 400px; margin-left: 50px"
          >
             <!--添加表单元素-->
             <el-form-item
             v-for="item in formData"
             :key="item.field"
             :prop="item.field"
             :label="item.text"
             >
                <el-input v-model="item.value" :id="item.key" />
             </el-form-item>
    
          </el-form>
    
          <!--表单提交-->
          <div slot="footer" class="dialog-footer">
             <el-button @click="dialogFormVisible = false"> 取消 </el-button>
             <el-button type="primary" @click="createData()"> 确定 </el-button>
          </div>
       </el-dialog>
    </template>
    
    <!--script-->
    <script>
    export default {
       name: "form",
       data() {
          return {
             formData: [],
          };
       },
       created() {
          this.getFormData();
       },
       methods: {
          // 加载表单数据
          getFormData() {
             var json = `
                [
                   {
                      \"key\":\"id\",
                      \"text\":\"id\"
                   },
                   {
                      \"key\":\"name\",
                      \"text\":\"姓名\"
                   },
                   {
                      \"key\":\"age\",
                      \"text\":\"年龄\"
                   }
                ]`;
    
             var data = JSON.parse(json);
    
             // 遍历数据
             data.forEach((element) => {
             // vue data
             this.formData.push({
                field: element.key,
                text: element.text,
                value: null,
             });
             });
          },
          createData() {
             // 接收数据
             var raw = {};
    
             // 遍历数据
             this.formData.forEach((item) => {
             raw[item.field] = item.value;
             });
    
             // 打印数据
             console.log(raw);
          },
       },
    };
    </script>
    
  5. 效果

  6. 待续

标签:vue,text,表单,raw,key,var,动态,data
From: https://www.cnblogs.com/study10000/p/18228378

相关文章

  • 使用form-create生成表单组件
    FormCreate是一个可以通过JSON生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。支持5个UI框架,并且支持生成任何Vue组件。内置20种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定FormCreate官网:https://www.form-create.com帮助文档:https://form-create.c......
  • Vue.js - 生命周期与工程化开发【0基础向 Vue 基础学习】
    文章目录Vue的生命周期Vue生命周期的四个阶段Vue生命周期函数(钩子函数工程化开发&脚手架VueCLI**开发Vue的两种方式:**脚手架目录文件介绍项目运行流程组件化开发&根组件App.vue文件(单文件组件)的三个组成部分普通组件的注册使用局部注册的方法全局注册的方法......
  • 【C语言进阶】--- 动态内存管理
    动态内存管理函数1.malloc函数void*malloc(size_tsize);功能:向堆区的空间中申请一块大小为size个字节的空间,返回指向这块空间的指针如果开辟失败会返回一个NULL指针,因此要检查malloc的返回值,避免返回NULL指针后再访问空指针malloc申请的空间,程序退出后会还给操作系统......
  • 股票问题(多次买卖),动态规划
     publicstaticintMaxProfit(int[]prices){intpriceSize=prices.Length;int[,]dp=newint[priceSize,2];//同一天有两种状态,[i,0]为第i天没有股票的利润,[i,1]为i天持有股票的利润dp[0,0]=0;dp[0,1]=-prices[0];//初始化,第一天没有进行股票交易为0,第一天买入股......
  • 【普及二】【九 动态规划二】【第6题】
    思考过程:1.有题目联想到DP基础——>最大子段和2.分析题目,可知此题本质为修改后的最大子段和3.根据题目要求,修改状态将f[i]——>i结尾最大子段和改为f[i][j]——>i结尾,加j个最大子段和4.设计方程(有最大子段和原题更改)收获要学会从新题目中发现旧题目,更改后即......
  • 为什么选择 Vue 3?
    专栏目录《Vue3基础》文章目录专栏目录前言一、Vue是什么?Vue是什么?Vue的三个特点1、组件化架构2、响应式编程3、学习成本低Vue生态适用场景横向比较二、为什么选择Vue3?Vue2.x和Vue3.x的主要区别Vue3升级指南总结前言随着互联网行业的不断发展,......
  • vue3 使用element plus 方式
    安装依赖npminstallelement-plus--save引入依赖import'./assets/main.css'import{createApp}from'vue'import{createPinia}from'pinia'importAppfrom'./App.vue'importrouterfrom'./router'//从这里引......
  • vue 引用第三方库 Swpier轮播图
    本文全程干货,没有废话1.使用npm安装swiper,使用save保存到packjson中npminstall--saveswiper2、把swiper看成是第三方库或者是组件,然后按照,引用,挂载组件,使用组件三步法。3、在script里的exportdefault上面引用这俩。import{Swiper,SwiperSlide......
  • Vue.js 动态组件与异步组件
    title:Vue.js动态组件与异步组件date:2024/6/2下午9:08:50updated:2024/6/2下午9:08:50categories:前端开发tags:Vue概览动态组件异步加载性能提升路由管理状态控制工具生态第1章Vue.js简介1.1Vue.js概述Vue.js是一个渐进式的JavaScript框架,用于构......
  • 基于SpringBoot+Vue毕业设计管理系统设计和实现(源码+LW+部署讲解)
    ......