vue根据后台传递的json数据生成动态配置页面(二)动态弹窗/ 展示部分其他源码

本文介绍了一个基于Vue的动态弹窗组件的实现,包括调用方式、组件代码展示以及测试页面和数据。组件使用了Element UI,支持动态表单元素如select、radio等,并提供了数据验证和提交、取消操作。测试页面展示了如何根据后台传递的json数据生成动态配置页面。
摘要由CSDN通过智能技术生成

首先声明一哈,这个项目目前排期无限延后了,这个项目分为建模和展示。目前建模部分完成了,但是和展示部分的数据结构大不一样。所以如果只是展示的话可以看一下,如果还要建模就不要看了。

动态弹窗

调用

 <dynamicAddForm 

:title=title 

:addFormData=addFormData 

:show=open 

@submit='submit' 

@cancel='cancel'>

</dynamicAddForm>

组件

<template>

<!-- <div :style="{'width':ifWidth}"> -->

    <el-dialog :title="title" :visible.sync="show" width="600px">

         <el-form :model="form" ref="form"  :rules="rules" label-width="180px"> 

              <el-form-item  v-for="item in addFormData" :label="item.tittle">

                    <component 

                    :is="item.componentType" 

                    v-model="item.defalutValue"                

                    :placeholder="item.placeholder" 

                    clearable

                    :options="item.optionValue"

                    :props="{value: 'code',label: 'name',children: 'children', checkStrictly: true, expandTrigger: 'hover' }"

                    value-format="yyyy-MM-dd"

                    > 

                        <div v-if="item.componentType=='el-select'">

                            <el-option

                            v-for="dict in item.optionValue"

                            :key="dict.dictValue"

                            :label="dict.dictLabel"

                            :value="dict.dictValue"

                            /> 

                        </div>

                         <div v-if="item.componentType=='el-radio-group'">

                            <el-radio

                            v-for="dict in item.optionValue"

                            :key="dict.dictValue"

                            :label="dict.dictValue"

                            >{ {dict.dictLabel}}

                            </el-radio> 

                        </div>    

                    </component>

              </el-form-item>

         </el-form>

        <div slot="footer" class="dialog-footer">

            <el-button type="primary" @click="submitForm">确 定</el-button>

            <el-button @click="cancel">取 消</el-button>

        </div>

  </el-dialog>

  <!-- </div> -->

</template>

<script>

export default {

    props:{

        ifWidth:{

            type:String,

            default:'100%'

         }, 

        addFormData: {

            type:Array,

            default:() => {

          

Vue.js中,动态生成表单通常通过模板绑定和数据驱动的方式来进行。当从后端获取JSON数据时,可以按照数据结构创建动态的HTML元素,并将其插入到页面上。 以下是基本步骤: 1. **设置数据模型**: 首先,在Vue实例的data选项中定义一个对象,表示你希望生成的表单结构。比如: ```javascript data() { return { formSchema: [] // 这里是一个空数组,用于存储动态表单字段的对象 } }, async created() { const response = await axios.get('your-api-url'); // 获取后端JSON数据 this.formSchema = response.data; // 更新表单字段 } ``` 2. **模板渲染**: 使用`v-for`指令遍历`formSchema`数组,生成对应字段的输入组件。例如,如果你有`input`、`select`等基础组件库: ```html <div v-for="(field, index) in formSchema" :key="index"> <label :for="field.name">{{ field.label }}</label> <!-- 使用v-bind绑定属性,如输入框 --> <input type="text" v-model="field.value" :id="field.name" :name="field.name"> <!-- 更复杂的数据类型,如选择器或其他自定义组件 --> <your-custom-component :options="field.options" :value="field.value"></your-custom-component> </div> ``` 3. **事件处理**: 如果需要,可以在每个表单元素上添加相应的事件处理器,如提交按钮的点击事件,或者校验功能。 **相关问题--:** 1. Vue中如何处理表单验证? 2. 如何在动态生成的表单中更新数据并同步至后端? 3. 当后端JSON结构发生变化时,如何保证前端表单的适应性?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值