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);
		});
	},
相关推荐
ClickHouseDB19 分钟前
ClickHouse .NET 驱动程序新特性:从 1.0 到 1.3 的演进之路
java·前端·windows
bitbrowser31 分钟前
Gmail注册要求手机号如何解决?哪些情况可以不填手机号
前端·指纹浏览器·gmail
LCG米31 分钟前
STM32 HardFault故障定位实测:压栈帧寄存器解析、CFSR故障源判读与出错地址回溯
前端·javascript·stm32·单片机·嵌入式
夏幻灵36 分钟前
Express 静态资源托管详解:从本地 HTML 到 express.static()
前端·html·express
yyuuuzz1 小时前
云服务器部署 web 项目的进程常驻记录
运维·服务器·前端·阿里云·云计算·aws
持敬chijing1 小时前
白盒测试与代码审计-JS 数据逆向
javascript·网络·安全·web安全·网络安全·网络攻击模型·安全威胁分析
IT_陈寒1 小时前
一文搞懂React的核心概念
前端·人工智能·后端
weixin_BYSJ19871 小时前
【计算机毕设】基于Spring_Boot_Vue的马拉松报名与选手成绩追踪系统05445
java·vue.js·spring boot·学习·spring·django·课程设计
薛一半1 小时前
Redux实战:组件状态管理全解析
开发语言·前端·javascript·react.js