vue动态组件实现动态表单的方法

本文获取动态列和动态表单的后端使用数据库存储,使用java接口获取代码内容。

后端代码我就不粘贴出来了,就是普通的从数据库中获取代码,获取到的代码例子如下:

已下代码是iview的modal信息

复制代码
    <Modal width="800" v-model="modal" title="新增"  :mask-closable="false" >
        <i-Form :model="saveform" ref="saveform" :rules="ruleValidate" :label-width="100">
        <row>
        <i-col span="12" >
	                <Form-Item label="代码" prop="dm">
		                <i-Input v-model="saveform.dm"></i-Input>
		            </Form-Item>
		</i-col>
		<i-col span="24" >
	                <Form-Item label="名称" prop="mc">
		                <i-Input v-model="saveform.dm"></i-Input>
		            </Form-Item>
        </i-col>
        </row>

        </i-Form>
        <div slot="footer">
            <i-button type="text" @click="modal=false">取消</i-button>
            <i-button type="info" @click="save">保存</i-button>
        </div>
    </Modal>

前端页面中加入自定义组件:

复制代码
    <!-- 动态组件注入 -->
    <component :is="dynamicComponent" :saveform="saveform" ref="dynamicComp"></component>

然后在vue的create生命周期中,加入已下代码,用于注册动态表单:

复制代码
	created: function () {
		let self = this;
		var url = baseUrl + 'xxxxxx';
		let pro = new Promise((resolve, reject) => {
			$.ajax({
				url: url,
				type: 'POST',
				data: {},
				dataType: 'json',
				success: function (res) {
					let nr = res.content.nr;
					try {
						resolve(nr);
					} catch (error) {
						reject(error);
					}
				},
				error: function (err) {
					console.log('err:', err);
					reject(err);
				}
			});
		});
		pro.then(result => {
			console.log('结果:', result);
			// 创建一个动态组件
			const DynamicModal = {
				template: result,
				props: ['saveform'], // 接收父组件传递的数据
				data() {
					return {
						modal: false,
						saveform: {dm:null,mc:null}
					};
				},
				methods: {
					save: function () {
						var self = this;
						console.log('这是保存方法');
					},
				}
			};
			// 在 Vue 实例中注册动态组件
			app.$options.components.DynamicModal_1 = DynamicModal;
			// 在模板中使用动态组件
			self.dynamicComponent = 'DynamicModal_1';

			console.log('结果:self', self);

		}).catch(error => {
			console.log('出错:', error);
		});
	},
相关推荐
林强1812 小时前
前端文件预览docx、pptx和xlsx
前端
计算机学姐2 小时前
基于微信小程序的高校班务管理系统【2026最新】
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis
像是套了虚弱散4 小时前
DevEco Studio与Web联合开发:打造鸿蒙混合应用的全景指南
开发语言·前端·华为·harmonyos·鸿蒙
衬衫chenshan4 小时前
【CTF】强网杯2025 Web题目writeup
前端
飞翔的佩奇5 小时前
【完整源码+数据集+部署教程】【天线&水】舰船战舰检测与分类图像分割系统源码&数据集全套:改进yolo11-repvit
前端·python·yolo·计算机视觉·数据集·yolo11·舰船战舰检测与分类图像分割系统
哆啦A梦15886 小时前
点击Top切换数据
前端·javascript·vue.js
程序猿追6 小时前
Vue组件化开发
前端·html
艾德金的溪7 小时前
redis-7.4.6部署安装
前端·数据库·redis·缓存
小光学长7 小时前
基于Vue的2025年哈尔滨亚冬会志愿者管理系统5zqg6m36(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
@PHARAOH7 小时前
WHAT - 受控组件和非受控组件
前端·javascript·react.js