详解Vue返回值动态生成表单及提交数据的办法

 更新时间:2021年12月27日 10:13:34   作者:mqy1023  
这篇文章主要为大家介绍了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>

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • vuejs父子组件通信的问题

    vuejs父子组件通信的问题

    本篇文章主要介绍了vue父子组件通信 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Vue官方文档梳理之全局配置

    Vue官方文档梳理之全局配置

    这篇文章主要介绍了Vue官方文档梳理之全局配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • .vue 组件打包成 .js的操作方法

    .vue 组件打包成 .js的操作方法

    这篇文章主要介绍了.vue 组件打包成 .js的操作方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • vue3中的ref,toRef,toRefs三个的作用使用小结

    vue3中的ref,toRef,toRefs三个的作用使用小结

    Vue3中ref、reactive、toRef、toRefs都是与响应式数据相关的,就此做一份笔记作为区别,本文重点给大家讲解vue3中的ref,toRef,toRefs三个是干嘛的,有什么作用,感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • Vue实现开心消消乐游戏算法

    Vue实现开心消消乐游戏算法

    这篇文章主要介绍了使用Vue写一个开心消消乐游戏,游戏算法在文中给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Vue内联处理器中访问方法和访问事件参数详解

    Vue内联处理器中访问方法和访问事件参数详解

    在 Vue 3 中,使用组合式 API 时,可以通过内联事件处理器来直接在模板中编写事件处理逻辑,内联事件处理器不仅可以直接执行简单的操作,还可以调用组件中的方法,并访问事件参数,下面将详细讲解如何在内联事件处理器中调用方法以及访问事件参数,需要的朋友可以参考下
    2024-12-12
  • Vue filter 过滤当前时间 实现实时更新效果

    Vue filter 过滤当前时间 实现实时更新效果

    这篇文章主要介绍了Vue filter 过滤当前时间 实现实时更新效果,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • 详解vuex的简单使用

    详解vuex的简单使用

    这篇文章主要介绍了详解vuex的简单使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 12 种使用Vue 的最佳做法

    12 种使用Vue 的最佳做法

    这篇文章主要介绍了12 种使用Vue 的最佳做法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • vue axios请求频繁时取消上一次请求的方法

    vue axios请求频繁时取消上一次请求的方法

    这篇文章主要介绍了vue axios请求频繁时取消上一次请求的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11

最新评论