详解Vue返回值动态生成表单及提交数据的办法
作者:mqy1023 发布时间:2024-05-28 16:09:58
标签:Vue,返回值,生成,表单
目录
主要解决的问题
一、后端返回的数据,提交到后端的数据格式如下:
二、vue前端代码如下:
总结
主要解决的问题
1、vue在循环的时候需要动态绑定不同的v-model;vue动态的表单,数据怎么绑定呢?
2、动态表单上所有name属性对应的键值对的形式提交到后端
一、后端返回的数据,提交到后端的数据格式如下:
// 后端返回的数据,根据返回类型用对应的组件
[
{
"componentType": "input",
"componentName": "username",
"required": "1", // 提交时是否要必须填写
"name": "姓名",
},
{
"componentType": "radio",
"componentName": "sex",
"required": "1",
"name": "性别",
"options": [
{
"name": "男",
"value": "0000"
},
{
"name": "女",
"value": "1111"
}
]
}
]
// 提交到服务器的数据格式
{
username: '我的姓名',
sex: '0000' // 对应”男“
}
二、vue前端代码如下:
<template>
<div class="page-container">
<div class="dynamic-content">
<div v-for="(item,idx) in infoList" :key="idx">
<input class="common-input" v-model="modelItems[idx]" v-if="item.componentType=='input'">
<van-radio-group v-model="modelItems[idx]" direction="horizontal" v-if="item.componentType=='radio'">
<van-radio :name="itemRadio.value" v-for="itemRadio in item.options" :key="itemRadio.value">
{{itemRadio.name}}
</van-radio>
</van-radio-group>
</div>
<div class="common-btn" @click="clickSubmit">提交数据</div>
</div>
</div>
</template>
<script>
import Vue from 'vue'
import { getListData } from '@/api/home'
import { RadioGroup, Radio } from 'vant'
Vue.use(Radio).use(RadioGroup)
export default {
data() {
return {
modelItems: {}, // vue在循环的时候需要动态绑定不同的v-model
infoList: []
}
},
mounted() {
this.formKeyArr = []
this.getList()
},
methods: {
getList() {
getListData()
.then((res) => {
const infoListData = res.infoList
this.infoList = infoListData
infoListData.forEach((item, index) => {
// 保存属性name和是否必填,后续提交数据用到
// { name: 'username', type: 1 }, { name: 'sex', type: 1}
this.formKeyArr.push({ name: item.componentName, type: item.required })
})
})
.catch(() => {
})
},
clickSubmit() {
const postParams = {} // 提交的数据
let isCanSubmit = true
this.formKeyArr.forEach((item, index) => {
console.log('item=', item)
if (item.type === '1' && !this.modelItems[index]) { // 所有require必须的标记符
// 请先填写完成, toast请填写完整
isCanSubmit = false
}
postParams[item['name']] = this.modelItems[index]
})
if (isCanSubmit) {
// 可以提交数据
// 可以拿到提交表单数据
// { username: '我的姓名', sex: '0000' // 对应”男“ }
console.log('postParams=', postParams)
}
}
}
}
</script>
<style lang="scss">
</style>
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注asp之家的更多内容!
来源:https://blog.csdn.net/mqy1023/article/details/122162914


猜你喜欢
- 这个需求是产品提的,一开始只是设置了 <input style="padding-top: 3px;" type=
- 原作者:Nik Piepenbreier翻译&内容补充:费弗里原文地址:https://towardsdatascience.com
- 前言:索引下推(ICP)是针对MySQL使用索引从表中检索数据行的情况的优在没有索引下推的情况下,MySQL通过存储引擎遍历索引来定位表中的
- 先创建表,然后生成批量数据。在models文件里from django.db import models# Create your mode
- 一、Flask简介Flask 是一个 Python 实现的 Web 开发微框架。官网:http://flask.pocoo.org/二、De
- 本文实例讲述了php7 图形用户界面GUI 开发。分享给大家供大家参考,具体如下:一、下载指定系统扩展http://pecl.php.net
- 本文实例为大家分享了python学生管理系统的具体代码,供大家参考,具体内容如下类class Student: stuID = "
- 本文实例讲述了Python面向对象之继承原理与用法。分享给大家供大家参考,具体如下:目标单继承多继承面向对象三大特性封装 根据 职责 将 属
- 看代码吧~# -*- coding:utf-8 -*- import osimport jsonimport numpy as np #fr
- 怎样压缩sql server2000的数据库备份文件,像rar一样?小弟有一7m的sql server2000 数据库备
- 本文实例讲述了Smarty实现页面静态化(生成HTML)的方法。分享给大家供大家参考,具体如下:为了减少数据库读取次数,某些内容不经常被更改
- 在Python类中规定,函数的第一个参数是实例对象本身,并且约定俗成,把其名字写为self。其作用相当于java中的this,表示当前类的对
- Python 操作 Excel本篇博客介绍一种 Python 操作 Excel 的办法,核心用到 xlrd与xlwt模块。xlrd 
- 本文实例讲述了Python设计模式之代理模式。分享给大家供大家参考,具体如下:代理模式(Proxy Pattern):为其他对象提供一种代理
- 1.先用 for 循环取for item in l: if isinstance(item ,list): &nb
- 通过 1至10 阶来拟合对比 均方误差及R评分,可以确定最优的“最大阶数”。import numpy as npimport matplot
- 译注:原文是StackOverflow上一个如何用程序读取迷宫图片并求解的问题,几位参与者热烈地讨论并给出了自己的代码,涉及到用Python
- Display SQL Server Login Mode. Supported Plat
- 一、python邮件模块简介email模块属于内置模块,用来自定义邮件的中文、主题、日期、附件等信息;smtplib模块属于内置模块,它对s
- I. 前言在上一篇文章深入理解PyTorch中LSTM的输入和输出(从input输入到Linear输出)中,我详细地解释了如何利用PyTor