在微信小程序中,通过 JSON 配置来生成自定义表单和自定义表格是一种高效的方式,可以减少开发工作量并提高代码的可维护性。以下是一个基本的示例,展示如何通过 JSON 配置来生成自定义表单和自定义表格。
自定义表单假设我们有一个 JSON 配置文件 formConfig.json,内容如下:
{
"formItems": [
{
"type": "input",
"label": "姓名",
"name": "name",
"placeholder": "请输入姓名"
},
{
"type": "input",
"label": "年龄",
"name": "age",
"placeholder": "请输入年龄"
},
{
"type": "radio",
"label": "性别",
"name": "gender",
"options": [
{ "label": "男", "value": "male" },
{ "label": "女", "value": "female" }
]
},
{
"type": "checkbox",
"label": "兴趣",
"name": "interests",
"options": [
{ "label": "阅读", "value": "reading" },
{ "label": "运动", "value": "sports" },
{ "label": "音乐", "value": "music" }
]
}
]
} 在小程序的页面中,我们可以通过以下方式来生成表单:
<!-- form.wxml -->
<form bindsubmit="formSubmit">
<block wx:for="{{formItems}}" wx:key="index">
<view class="form-item">
<label>{{item.label}}</label>
<input wx:if="{{item.type === 'input'}}" name="{{item.name}}" placeholder="{{item.placeholder}}" />
<radio-group wx:if="{{item.type === 'radio'}}" name="{{item.name}}">
<label wx:for="{{item.options}}" wx:key="index">
<radio value="{{item.value}}" />{{item.label}}
</label>
</radio-group>
<checkbox-group wx:if="{{item.type === 'checkbox'}}" name="{{item.name}}">
<label wx:for="{{item.options}}" wx:key="index">
<checkbox value="{{item.value}}" />{{item.label}}
</label>
</checkbox-group>
</view>
</block>
<button formType="submit">提交</button>
</form> // form.js
Page({
data: {
formItems: []
},
onLoad: function () {
// 加载JSON配置
wx.request({
url: 'path/to/formConfig.json',
success: (res) => {
this.setData({
formItems: res.data.formItems
});
}
});
},
formSubmit: function (e) {
console.log('表单数据:', e.detail.value);
}
}); 自定义表格假设我们有一个 JSON 配置文件 tableConfig.json,内容如下:
{
"columns": [
{ "title": "姓名", "dataIndex": "name" },
{ "title": "年龄", "dataIndex": "age" },
{ "title": "性别", "dataIndex": "gender" },
{ "title": "兴趣", "dataIndex": "interests" }
],
"dataSource": [
{ "name": "张三", "age": 25, "gender": "male", "interests": ["reading", "sports"] },
{ "name": "李四", "age": 30, "gender": "female", "interests": ["music"] }
]
} 在小程序的页面中,我们可以通过以下方式来生成表格:
<!-- table.wxml -->
<view class="table">
<view class="table-header">
<view wx:for="{{columns}}" wx:key="index" class="table-cell">{{item.title}}</view>
</view>
<view class="table-body">
<view wx:for="{{dataSource}}" wx:key="index" class="table-row">
<view wx:for="{{columns}}" wx:key="index" class="table-cell">
{{item[item.dataIndex]}}
</view>
</view>
</view>
</view> // table.js
Page({
data: {
columns: [],
dataSource: []
},
onLoad: function () {
// 加载JSON配置
wx.request({
url: 'path/to/tableConfig.json',
success: (res) => {
this.setData({
columns: res.data.columns,
dataSource: res.data.dataSource
});
}
});
}
}); 通过这种方式,你可以通过 JSON 配置文件来动态生成自定义表单和自定义表格,从而提高开发效率和代码的可维护性。
网友回复
阿里云ESA、cloudflare worker、腾讯云EdgeOne网站代理托管哪家更好?
剪映能打开.fcpxml格式的文件吗?
增量式编码器与绝对式编码器的区别是啥?
有没有开源的单张照片或者序列帧图片或视频就能重建4d场景动画项目?
chrome网页突然报错:错误代码:RESULT_CODE_KILLED_BAD_MESSAGE
openai的codex如何全程无需手动确认自动修改文件?
阿里云oss前端上传文件直传如何限制文件类型?
阿里云oss前端获取policy签名直传oss上传文件回调如何传?
如何将根据三维物体通过提示词变成可交互的4d场景动画?
浏览器中实时摄像头离线视觉ai模型有吗?


