112 lines
2.3 KiB
Markdown
112 lines
2.3 KiB
Markdown
---
|
||
title: 动态数据
|
||
---
|
||
|
||
除了渲染静态页面及表单,amis 还能渲染动态数据,比如下面这个表格数据是来自 api 这个接口的请求
|
||
|
||
```json
|
||
{
|
||
"type": "crud",
|
||
"api": " http://xxx/api/sample",
|
||
"columns": [
|
||
{
|
||
"name": "engine",
|
||
"label": "引擎"
|
||
},
|
||
{
|
||
"name": "browser",
|
||
"label": "浏览器"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
amis 期望这个 api 接口返回的是如下的格式:
|
||
|
||
```json
|
||
{
|
||
"status": 0,
|
||
"msg": "",
|
||
"data": {
|
||
"items": [
|
||
{
|
||
"engine": "Trident",
|
||
"browser": "IE 9"
|
||
},
|
||
{
|
||
"engine": "Gecko",
|
||
"browser": "Firefox 70"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
下面是具体介绍
|
||
|
||
### 整体格式
|
||
|
||
要求每个接口都返回 `status` 字段用来表示成功还是失败,如果失败了,通过 `msg` 字段来说明失败原因。当然如果成功 `msg` 也可以用来设置提示信息。
|
||
|
||
```json
|
||
{
|
||
"status": 0, // 0 表示成功,非0 表示失败
|
||
"msg": "", // 提示信息 包括失败和成功
|
||
"data": {
|
||
// ...
|
||
// 具体的数据
|
||
}
|
||
}
|
||
```
|
||
|
||
如果你的系统有自己的规范,可以在 fetcher 统一进行适配,如:
|
||
|
||
```js
|
||
{
|
||
renderAmis(
|
||
{
|
||
// 这里是 amis 的 Json 配置。
|
||
type: 'page',
|
||
title: '简单页面',
|
||
body: '内容'
|
||
},
|
||
{
|
||
// props
|
||
},
|
||
{
|
||
// 忽略别的设置项
|
||
fetcher: function (api) {
|
||
// 适配这种格式 {"code": 0, "message": "", "result": {}}
|
||
return axios(config).then(response => {
|
||
let payload = {
|
||
status: response.data.code,
|
||
msg: response.data.message,
|
||
data: response.data.result
|
||
};
|
||
|
||
return {
|
||
...response,
|
||
data: payload
|
||
};
|
||
});
|
||
}
|
||
}
|
||
);
|
||
}
|
||
```
|
||
|
||
### 具体要求
|
||
|
||
每个渲染的接口返回都有自己的格式要求,主要体现在 data 字段内部,具体请参考每个渲染的接口说明。
|
||
|
||
- [Page](./renderers/Page.md#接口说明)
|
||
- [CRUD](./renderers/CRUD.md#接口说明)
|
||
- [Form](./renderers/Form/Form.md#接口说明)
|
||
- [Select](./renderers/Form/Select.md#接口说明)
|
||
- [Checkboxes](./renderers/Form/Checkboxes.md#接口说明)
|
||
- [Radios](./renderers/Form/Radios.md#接口说明)
|
||
- [List](./renderers/Form/List.md#接口说明)
|
||
- [Wizard](./renderers/Wizard.md#接口说明)
|
||
|
||
`TBD`
|