amis
amis 使用(模板 + 数据)
1 index.html
1.1 amis.embed 渲染 json 为前端页面
当前使用的 amis SDK 方式
1.2 左侧菜单
static/pages/site.json
visible 属性可以控制是否显示左侧菜单
2 Schema (页面配置)

2.1 容器类型
aside、body 和 toolbar这三个配置都是容器类型,容器类型即可以把其他渲染类型放进来。
容器内可以直接放一个渲染器,也可以放多个,用数组包起来即可如:
3 数据域
上面的配置要做的很简单:使用 Page 组件,在内容区内渲染一段模板文字,其中${text}是模板变量,它会去到当前组件的数据域中,获取text变量值。
3.1 通过接口初始化数据域
配置初始化接口 initApi:
接口必须按照下面的格式返回:
3.2 显式配置 data 属性值
4 API
4.1 格式要求
AMIS 要求 API 返回的格式是 Json 格式。
4.1.1 推荐格式
status: 返回
0,表示当前接口正确返回,否则按错误请求处理;msg: 返回接口处理信息,主要用于表单提交或请求失败时的
toast显示;data: 必须返回一个具有
key-value结构的对象。
4.1.2 兼容格式
amis 支持直接返回数据的方式,无需返回 status 和将数据放在 data 字段中,比如下面的例子:
但这种方式无法显示错误信息,只能通过返回 http 状态码来标识错误。
4.2 自定义适配器
如 butterfly 返回的 {"stat": "OK", "data":{"list"[], "total":0}}
而 amis 需要 {"status": 0, msg:"OK", "data":{"items": [], "count":0}}
则可以通过如下适配器完成
4.3 API 配置--Form
4.3.1 api
当表单提交时,会把 Form 数据发送给指定 API,API 只需要返回状态信息(成功或失败)即可。如果返回了其他数据如 {id: 1},返回的数据会被合并到 Form 数据中,可以用来做其他操作,比如跳转的新建数据的详情页面。
4.3.2 initApi
当表单初始化的时候,如果有设置 initApi, 则发起一个请求,并携带表单当前的数据。接口返回的值会被合并到表单数据中。
4.3.3 asyncApi
正常情况下,表单提交时,把数据发送给 api,通过 api 返回的状态就能知道表单提交完成与否。但是有些情况下并不能知道,比如这个提交是一个异步过程,需要等待其他服务处理完后,才能算真正的完成。
针对这种情况,如果配置了 asyncApi, 表单提交不会马上结束,而是隔 3s(可配置) 轮询 asyncApi 接口,直到返回成功了才结束。
4.3.4 schemaApi
正常情况下,一个表单有哪些配置项都是固定的,万一如果不能固定,希望通过 API 来返回,则可以通过配置 schemaApi 来实现。
4.4 API 配置--Wizard
Wizard 可用 API 跟 Form 差不多,同样可以设置 api 和 initApi。但是目前不支持 asyncApi 和 schemaApi。
关于 api 和 initApi 说明,请参考 Form 部分。
4.5 API 配置--CRUD
增删改查模型可用 API 说明。
4.5.1 api
获取列表 API,发送时会携带 url params、配置的 fitler 数据和分页数据。要求目标接口返回列表数据。
4.5.2 quickSaveApi
CRUD 中,支持部分列快速编辑。当数据被修改后,默认会以数组的格式,把所有修改的行信息给出。
默认发送数据格式如下:(结构可调整,具体请参考 schema 配置。)
此接口只需要返回状态信息即可。返回 data 数据将被无视。
4.5.3 quickSaveItemApi
默认快速编辑都是批量保存,所以一般配置 quickSaveApi 即可。如果你想单个及时保存,则需要配置 quickSaveItemApi。
当单个保存时,传入参数不再是数组,而是修改的当前项数据。
4.5.4 saveOrderApi
当开启排序功能后,新的排序结果会通过 saveOrderApi 发送给后端。
比如我将 ID 为 3 的数据拖拽放到 ID 为 5 的数据后面,这次保存将会发送以下信息。
4.5.5 批量修改 API
CRUD 还支持批量修改,当选中多条数据进行变量修改时,发送的数据格式如下。
4.6 API 配置--FormItem
4.6.1 Select
sourceSelect 支持动态获取 options,要求返回格式为。autoCompleteSelect 还支持根据用户输入自动自动搜索结果,并选中. 用户输入值请通过$term变量获取,返回格式要求如下。
4.6.2 级联 Select (chained-select)
级联 Select,也是通过 source 接口拉取结果的,当前选中值请通过 $value 变量获取,多层值已用逗号隔开。要求返回格式如下。
每次变动都会重新拉取一次,只要能拉到数组,就可以一直级联选择下去。
4.6.3 Tree
Tree 也支持动态拉取选项,跟 Select 格式一样,不过多了一层 children。
4.6.4 Matrix
矩阵类型的表单也是通过 source 动态拉取选项的,格式如下。
4.7 API 配置--Page
4.7.1 initApi
当页面初始化的时候,如果有设置 initApi, 则发起一个请求。接口返回的值可用于整个页面。
5 接口调试信息
request请求信息,包含请求类型,地址,以及参数。responseAPI 的实际返回结果。
5.1 template/index.html
5.2 page json
5.3 console log
5.3.1 requestAdaptor
api
5.3.2 responseAdaptor
response
payload
6 最佳实践
6.1 某个操作完如何刷新页面
给响应的action上配置reload:'window'
6.2 crud 设置默认参数
6.3 crud批量操作如何指定id
配置:primaryField: "xxx",然后通过${ids}去取,ids默认格式为:"id1,id2,id3"
6.4 接口超时时间
默认90秒,报错500,无法修改
6.5 sendOn使用说明和原理
原理是这样的, 比如接口1 返回一个 a 字段,这个 a 字段一开始是要没有值的。
接口2 的 url 上写上 '/api/xxxx?a=${a}' 然后配置 sendOn: 'this.a'
这样,接口2 在第一次尝试请求的时候,发现 this.a 不满足,所以不请求了,后续 接口数据回来了,会让 a 这个值发生变化, amis 会监控接口2 的 url ,发现接口2的运算结果变了,就会再次请求。
Last updated