Merge pull request #7094 from 2betop/feat-input-kv

feat: input-kv 添加 autoParseJSON 配置 Close: #7092
This commit is contained in:
hsm-lv 2023-06-09 09:10:30 +08:00 committed by GitHub
commit 0290fd67e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 8 deletions

View File

@ -198,13 +198,14 @@ key 只能是字符串,因此输入格式是 `input-text`,但 value 格式
## 属性表
| 属性名 | 类型 | 默认值 | 说明 |
| ---------------- | --------- | -------------- | ------------------ |
| valueType | `type` | `"input-text"` | 值类型 |
| keyPlaceholder | `string` | | key 的提示信息的 |
| valuePlaceholder | `string` | | value 的提示信息的 |
| draggable | `boolean` | true | 是否可拖拽排序 |
| defaultValue | | `''` | 默认值 |
| 属性名 | 类型 | 默认值 | 说明 |
| ---------------- | --------- | -------------- | ---------------------------- |
| valueType | `type` | `"input-text"` | 值类型 |
| keyPlaceholder | `string` | | key 的提示信息的 |
| valuePlaceholder | `string` | | value 的提示信息的 |
| draggable | `boolean` | true | 是否可拖拽排序 |
| defaultValue | | `''` | 默认值 |
| autoParseJSON | `boolean` | `true` | 是否自动转换 json 对象字符串 |
## 事件表

View File

@ -9,6 +9,7 @@ import {isObject} from 'amis-core';
// input-kv 实际上是 combo 的一种扩展
addSchemaFilter(function (schema: Schema, renderer, props?: any) {
if (schema && schema.type === 'input-kv') {
const autoParseJSON = schema.autoParseJSON ?? true;
return {
draggable: true,
...schema,
@ -40,7 +41,11 @@ addSchemaFilter(function (schema: Schema, renderer, props?: any) {
value.forEach((item: any) => {
const key: string = item.key ?? '';
let value: any = item.value ?? schema.defaultValue ?? '';
if (typeof value === 'string' && value.startsWith('{')) {
if (
autoParseJSON &&
typeof value === 'string' &&
value.startsWith('{')
) {
try {
value = JSON.parse(value);
} catch (e) {}