chore: mapping 远程字段支持 data 直接返回数组情况 (#7061)

This commit is contained in:
liaoxuezhi 2023-06-05 13:56:25 +08:00 committed by GitHub
parent ca9b8ecc30
commit f745a4ebb0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 49 additions and 50 deletions

View File

@ -48,6 +48,7 @@ order: 57
## 渲染其它组件 ## 渲染其它组件
映射的值也可以是 amis schema渲染其它组件 映射的值也可以是 amis schema渲染其它组件
> 配置了`itemSchema`后,映射值不会再作为`schema`渲染 > 配置了`itemSchema`后,映射值不会再作为`schema`渲染
```schema ```schema
@ -81,6 +82,7 @@ order: 57
当映射值是`非object`时,可使用`${item}`获取映射值; 当映射值是`非object`时,可使用`${item}`获取映射值;
### html 或字符串模板 ### html 或字符串模板
使用`${item}` 获取映射值 使用`${item}` 获取映射值
```schema ```schema
@ -100,7 +102,8 @@ order: 57
} }
``` ```
### SchemaNode模板 ### SchemaNode 模板
```schema ```schema
{ {
"type": "page", "type": "page",
@ -189,14 +192,14 @@ order: 57
```json ```json
{ {
"type": "mapping", "type": "mapping",
"value": "1", "value": "1",
"map": { "map": {
"1": "第一", "1": "第一",
"2": "第二", "2": "第二",
"3": "第三", "3": "第三",
"*": "其他" "*": "其他"
} }
} }
``` ```
@ -208,45 +211,37 @@ order: 57
```json ```json
{ {
"type": "mapping", "type": "mapping",
"value": "1", "value": "1",
"map": [ "map": [{"1": "第一"}, {"2": "第二"}, {"3": "第三"}, {"*": "其他"}]
{"1": "第一"},
{"2": "第二"},
{"3": "第三"},
{"*": "其他"}
]
} }
``` ```
#### 多key对象数组 #### 多 key 对象数组
当映射值有多个key时需要使用`valueField`指定字段作为`mapping`的`key`, 也就是用来匹配`value`的值 当映射值有多个 key 时,需要使用`valueField`指定字段作为`mapping`的`key`, 也就是用来匹配`value`的值
可使用`labelField`指定展示字段,不配置时,默认为`label` 可使用`labelField`指定展示字段,不配置时,默认为`label`
**注意:**配置`labelField`后,映射值无法再作为`schema`渲染 **注意:**配置`labelField`后,映射值无法再作为`schema`渲染
```json ```json
{ {
"type": "mapping", "type": "mapping",
"value": "happy", "value": "happy",
"valueField": "name", "valueField": "name",
"map": [ "map": [
{ {
"name": "happy", "name": "happy",
"label": "开心", "label": "开心"
"color": "red" },
}, {
{ "name": "sad",
"name": "sad", "label": "悲伤"
"label": "悲伤", },
"color": "blue" {
}, "name": "*",
{ "label": "其他"
"name": "*", }
"label": "其他", ]
"color": "gray"
}
]
} }
``` ```
@ -473,12 +468,12 @@ List 的内容、Card 卡片的内容配置同上
## 属性表 ## 属性表
| 属性名 | 类型 | 默认值 | 说明 | | 属性名 | 类型 | 默认值 | 说明 |
| ----------- | ----------------- | ------ | --------------------------------------------------------------------------------- | | ----------- | --------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| className | `string` | | 外层 CSS 类名 | | className | `string` | | 外层 CSS 类名 |
| placeholder | `string` | | 占位文本 | | placeholder | `string` | | 占位文本 |
| map | `object`或`Array<object>` | | 映射配置 | | map | `object`或`Array<object>` | | 映射配置 |
| source | `string` or `API` | | [API](../../../docs/types/api) 或 [数据映射](../../../docs/concepts/data-mapping) | | source | `string` or `API` | | [API](../../../docs/types/api) 或 [数据映射](../../../docs/concepts/data-mapping) |
| valueField | `string` | value | `2.5.2` map或source为`Array<object>`时,用来匹配映射的字段名 | | valueField | `string` | value | `2.5.2` map source 为`Array<object>`时,用来匹配映射的字段名 |
| labelField | `string` | label | `2.5.2` map或source为`Array<object>`时,用来展示的字段名<br />注:配置后映射值无法作为`schema`组件渲染 | | labelField | `string` | label | `2.5.2` map source 为`Array<object>`时,用来展示的字段名<br />注:配置后映射值无法作为`schema`组件渲染 |
| itemSchema | `string`或[SchemaNode](../../docs/types/schemanode) | | `2.5.2` 自定义渲染模板,支持`html`或`schemaNode`<br /> 当映射值是`非object`时,可使用`${item}`获取映射值;<br />当映射值是`object`时,可使用映射语法: `${xxx}`获取`object`的值;<br /> 也可使用数据映射语法:`${xxx}`获取数据域中变量值。| | itemSchema | `string`或[SchemaNode](../../docs/types/schemanode) | | `2.5.2` 自定义渲染模板,支持`html`或`schemaNode`<br /> 当映射值是`非object`时,可使用`${item}`获取映射值;<br />当映射值是`object`时,可使用映射语法: `${xxx}`获取`object`的值;<br /> 也可使用数据映射语法:`${xxx}`获取数据域中变量值。 |

View File

@ -87,7 +87,11 @@ export const Store = StoreNode.named('MappingStore')
const data = normalizeApiResponseData(ret.data); const data = normalizeApiResponseData(ret.data);
(self as any).setMap( (self as any).setMap(
Array.isArray(data.options) ? data.options : data Array.isArray(data.options)
? data.options
: Array.isArray(data.items)
? data.items
: data
); );
} else { } else {
throw new Error(ret.msg || 'fetch error'); throw new Error(ret.msg || 'fetch error');