当前位置: 首页 > news >正文

uniapp小程序不支持动态组件问题

  • 背景:开发微信小程序。使用uniapp提供的框架进行开发。在pc端可以使用的component动态组件标签不被支持。HbuilderX中启动微信小程序时报编译错误。
    在这里插入图片描述
  • 替代方案。在诸多收费的自定义表单中。很少有提供微信小程序端的渲染组件。可能是基于此原因。也有支持的,但仅仅是在web-view页面中使用。
    在这里插入图片描述
  • 通过if-else判断。暂时能满足要求
<template><view class="dynamic-form"><form><input type="text" value="测试" v-model="a" placeholder="请输入内容" name="testInput" /><view v-for="item in formItems" :key="item.formItemId" class="form-item"><!-- 图片 --><image name="image" v-if="item.type === 'IMAGE'" :src="item.scheme.src" mode="aspectFit"/><!-- 文本描述 --><rich-text v-else-if="item.type === 'DESC_TEXT'" :nodes="item.scheme.content"v-model="formDataVar[item.scheme.vModel]"></rich-text><!-- 多选框 --><view v-else-if="item.type === 'CHECKBOX'"><text>{{ item.label }}</text><checkbox-group :name="item.vModel"><label v-for="(option, index) in item.scheme.config.options" :key="index"><checkbox :value="option.value" /> {{ option.label }}</label></checkbox-group></view><!-- 输入框 --><view v-else-if="item.type === 'INPUT'"><text>{{ item.label }}</text><input :type="item.scheme.config.dataType.type || 'text'" :placeholder="item.placeholder" :name="item.vModel" v-model="formDataVar[item.scheme.vModel]"/></view><!-- 省市联动 --><view v-else-if="item.type === 'PROVINCE_CITY'"><text>{{ item.label }}</text><!-- <picker mode="region" range="{{['北京','上海']}}" @change="handleRegionChange" @columnchange="handleColumnChange"name="provinceCity"><view class="picker">当前选择:{{ region[0] }}{{ region[1] }}</view></picker> --></view><!-- 日期 --><view v-else-if="item.type === 'DATE'"><text>{{ item.label }}</text><picker mode="date" :range="dateRange" @change="(e) => handleDateChange(item, e)" name="date" ><view class="picker">当前选择:{{ formDataVar[item.scheme.vModel] || '请选择日期' }}</view></picker></view></view><input v-model="message" placeholder="edit me"><p>Message is: {{ message }}</p><button type="submit" @click="handleSubmit">提交</button><!-- 提交按钮 --><view class="fixed-bottom"></view></form><view></view></view></template><script>
export default {props: {formData: {type: Object,required: true},/** 流程定义ID */processDefId: {type: String,required: true}},data() {return {formItems: this.formData?.formItems || [],region: ['北京市', '北京市'],dateRange: [],selectedDate: '',formDataVar: {},message: ''};},mounted() {console.log('formData2:', this.formData);console.log('formItems2:', this.formItems);// 初始化 formDataVar 数据this.formItems.forEach(item => {if (item.type === 'CHECKBOX') {this.$set(this.formDataVar, item.scheme.vModel, []);} else if (item.type === 'DATE') {this.$set(this.formDataVar, item.scheme.vModel, '');} else {this.$set(this.formDataVar, item.scheme.vModel, '');}});console.log('formDataVar:', this.formDataVar)},methods: {handleSubmit(e) {// console.log('Form submitted e:', this.$refs.rform);// 处理表单提交逻辑// console.log('Form submitted:', e.detail.value);// console.log('formdatavar: ', this.formItems)// console.log('formDataVar:', this.formDataVar);// 调用父组件的 submitFormData 方法this.$emit('submitFormData', this.formDataVar)},handleRegionChange(e) {const regions = ['北京', '上海']; // 示例地区this.region = [regions[e.detail.value[0]], regions[e.detail.value[1]]];},handleColumnChange(e) {// 可以在这里处理列变化},handleDateChange(item,  e) {// const date = new Date(e.detail.value).toLocaleDateString();// this.selectedDate = date;console.log('日期变化:', e.detail.value);const date = new Date(e.detail.value).toLocaleDateString();this.formDataVar[item.scheme.vModel] = date;}}
};
</script><style scoped>
.dynamic-form {padding: 20px;
}.form-item {margin-bottom: 20px;
}.fixed-bottom {position: fixed;bottom: 0;left: 0;right: 0;padding: 20rpx;background-color: #fff;box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);z-index: 999;}
</style>

相关文章:

  • 更进一步深入的研究ObRegisterCallBack
  • 【iSAQB软件架构】以架构为中心的开发方法
  • node-red的http-request组件调研三方接口请求参数为form-data解决方案
  • 基于算力魔方与PP-OCRv5的OpenVINO智能文档识别方案
  • 零基础RT-thread第一节:串口通信UART
  • 基于大模型预测的上睑下垂综合诊疗技术方案
  • Java大厂面试真题:谢飞机的技术挑战
  • 每日算法刷题Day29 6.12:leetcode二分答案4道题,用时1h10min
  • 多线程安全:核心解决方案全解析
  • 商业智能中的地图可视化模板:助力数据高效呈现
  • C++ Vector深度解析:动态组的底层机制与实战指南
  • 林业资源多元监测技术守护绿水青山
  • 第 4 篇:线性回归——机器学习“开山第一斧”,用一条直线洞见AI本质
  • python 在基因研究中的应用,博德研究所:基因编辑
  • Rust入门之并发编程基础(二)
  • 智能查重防串标:筑牢烟草行业招投标诚信“防火墙”
  • ssc377d在kernel下读写寄存器
  • (LeetCode 每日一题) 3423. 循环数组中相邻元素的最大差值 (数组)
  • 创新综合实践 水果商城管理系统
  • 【评测】Qwen3-embedding 0.6B和8B召回效果评估
  • webstorm可以做网站吗/深圳网站建设推广优化公司
  • 建设智能网站/网店营销
  • 做影视网站用的封面/seo优化快速排名
  • wordpress后台背景/seo研究中心论坛
  • 工厂软件管理系统/seo关键词优化费用
  • 汽车之家官方网/无锡网站seo