diff --git a/gh-pages/docs/components/action.html b/gh-pages/docs/components/action.html index a347df898..79fc59830 100644 --- a/gh-pages/docs/components/action.html +++ b/gh-pages/docs/components/action.html @@ -14,7 +14,7 @@ - +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + \n
\n

source接口中配置的参数waitSeconds=1maxLevel=4是测试接口所需参数,实际使用自己接口时不需要添加这两个参数

\n
\n

暴露参数

为了帮助后端接口获取当前选择器状态,chained-select 会默认给 source 接口的数据域中,添加若干个参数:

\n\n

属性表

除了支持 普通表单项属性表 中的配置以外,还支持下面一些配置

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
属性名类型默认值说明
optionsArray<object>Array<string>选项组
sourcestringAPI动态选项组
autoCompletestringAPI自动选中
delimiterstring,拼接符
labelFieldboolean"label"选项标签字段
valueFieldboolean"value"选项值字段
joinValuesbooleantrue拼接值
extractValuebooleanfalse提取值
\n

@todo 可能还支持别的

\n", + "html": "

基本用法

无限级别下拉,只支持单选,且必须和 source 搭配,通过 API 拉取数据,只要 API 有返回结果,就能一直无限级别下拉下去。

\n
\n
\n

source接口中配置的参数waitSeconds=1maxLevel=4是测试接口所需参数,实际使用自己接口时不需要添加这两个参数

\n
\n

暴露参数

为了帮助后端接口获取当前选择器状态,chained-select 会默认给 source 接口的数据域中,添加若干个参数:

\n\n

属性表

除了支持 普通表单项属性表 中的配置以外,还支持下面一些配置

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
属性名类型默认值说明
optionsArray<object>Array<string>选项组
sourcestringAPI动态选项组
autoCompletestringAPI自动选中
delimiterstring,拼接符
labelFieldboolean"label"选项标签字段
valueFieldboolean"value"选项值字段
joinValuesbooleantrue拼接值
extractValuebooleanfalse提取值
\n", "toc": { "label": "目录", "type": "toc", diff --git a/gh-pages/docs/components/form/checkbox.html b/gh-pages/docs/components/form/checkbox.html index a347df898..79fc59830 100644 --- a/gh-pages/docs/components/form/checkbox.html +++ b/gh-pages/docs/components/form/checkbox.html @@ -14,7 +14,7 @@ - +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + \n

表单展示

默认模式

默认展示模式为文字表单项分行显示

\n
\n

水平模式

水平模式,左右摆放,左右比率分配。

\n
\n

可以配置horizontal属性,调整偏移量,格式如下:

\n
"horizontal": {\n    "left": 2,\n    "right": 10,\n    "offset": 2\n}\n
\n

内联模式

使用内联模式展现表单项

\n
\n

实现一行展示多个表单项

使用 group 实现一行显示多个表单项

\n
\n

底部按钮栏

隐藏默认提交按钮

Form 默认会在底部渲染一个提交按钮,用于执行表单的提交行为。你可以通过两种方式去掉这个默认的提交按钮:

\n
    \n
  1. 配置:"submitText": ""
  2. \n
  3. 配置:"actions": []
  4. \n
\n
\n

配置若干自定义按钮

同样,你可以通过 actions 属性,配置任意你想要的行为按钮。

\n
\n

请记住,如果想触发表单提交行为,请配置"actionType": "submit""type": "submit"按钮

\n

去掉表单边框

通过配置"wrapWithPanel": false,可以去掉默认表单边框(包括标题,按钮栏以及边距样式等)。

\n
\n

注意!配置该属性后,titleactions属性将失效并无法渲染,请在表单内自行配置。

\n

固定底部栏

如果表单项较多导致表单过长,而不方便操作底部的按钮栏,可以配置"affixFooter": true属性,将底部按钮栏固定在浏览器底部

\n

表单项数据初始化

表单可以通过配置initApi,实现表单初始化时请求接口,用于展示数据或初始化表单项。

\n
\n

轮训初始化请求

Form 支持轮训初始化接口,步骤如下:

\n
    \n
  1. 配置initApi
  2. \n
  3. 配置 interval:单位为ms,最低值3000,低于该值按3000处理
  4. \n
\n
\n

如果希望在满足某个条件的情况下停止轮训,配置stopAutoRefreshWhen表达式。

\n
\n

表单提交

配置api属性,当表单执行提交行为时,会默认将当前表单数据域中的数据使用post方式发送给所配置api

\n
\n

点击提交按钮,会看到发送表单请求,请求数据体为:

\n
{\n  \"name\": \"xxx\",\n  \"email\": \"xxx@xx.com\"\n}\n
\n

当你需要配置特定的请求方式,请求体,header时,使用对象类型 api 配置,并使用 数据映射 进行数据配置。下面示例我们更改了请求方法为PUT,并在原提交数据的基础上添加一个字段"_from"。更多用法查看 API 文档数据映射文档

\n
\n

触发表单提交行为有下面几种方式:

\n
    \n
  1. 默认的提交按钮
  2. \n
  3. 为行为按钮配置"actionType": "submit"
  4. \n
  5. 配置"type": "submit"的按钮
  6. \n
\n

轮训提交请求

通过设置asyncApi,当表单提交发送保存接口后,还会继续轮训请求该接口,默认间隔为3秒,直到返回 finished 属性为 true 才 结束。

\n
\n

如果决定结束轮训的标识字段名不是 finished,请设置finishedField属性,比如:"finishedField": "is_success"

\n

重置表单

配置"type": "reset"或者"actionType": "reset"的按钮,可以实现点击重置表单项值。

\n
\n
\n

请注意:这里的重置是将表单数据域重置到初始状态而不是清空,如果你配置了初始化接口,那么重置操作是会将表单项重置至初始化表单项值

\n
\n

表单数据域调试

配置debug:true可以查看当前表单的数据域数据详情,方便数据映射、表达式等功能调试,如下,你可以修改表单项查看数据域变化

\n
\n
\n

该配置不会展示完整的数据链,只会展示当前表单的数据域

\n
\n

禁用数据链

默认表单是可以获取到完整数据链中的数据的,但是该默认行为不适用于所有场景,例如:

\n

在 CRUD 的列表项中配置弹框,弹框中有一个表单,则该表单项中所有的同name表单项都会根据上层crud的行数据进行初始化,如果你是实现编辑的功能那并没有是什么问题,但是如果你是新建功能,那么这将不符合你的预期,你可以手动设置"canAccessSuperData": false来关闭该行为

\n

提交后行为

表单提交成功后,可以执行一些行为。

\n

重置表单

如果想提交表单成功后,重置当前表单至初始状态,可以配置"resetAfterSubmit": true

\n
\n

编辑表单项,点击提交,成功后会发现表单项的值会重置到初始状态,即空

\n
\n

注意,如果表单项有默认值,则会将该表单项的值重置至该默认值。

\n
\n

跳转页面

配置redirect属性,可以指定表单提交成功后要跳转至的页面

\n
\n

刷新目标组件

配置reload属性为其他组件name值,可以在表单提交成功之后,刷新指定组件。

\n
\n

上例中form提交成功后,会触发namemy_serviceService组件重新请求初始化接口

\n

上面示例是一种组件间联动

\n

将数据域发送给目标组件

配置target属性为目标组件name值,可以在触发提交行为后,将当前表单的数据域发送给目标组件。

\n
\n

第一个表单在提交时,会将它的表单数据域数据发送给detailForm表单,触发detailForm的初始化接口联动,重新请求接口更新数据域,并更新关键字表单项。

\n

上面示例组合使用了 组件间联动接口联动

\n

持久化保存表单项数据

表单默认在重置之后(切换页面、弹框中表单关闭表单),会自动清空掉表单中的所有数据,如果你想持久化保留当前表单项的数据而不清空它,那么配置persistData:true

\n

如果想提交成功后,清空该缓存,则配置"clearPersistDataAfterSubmit": true

\n

修改表单项变化方式

@todo

\n\n

默认表单项变化时,会即时变化,例如你输入文本,每键入一次,就会触发

\n

属性表

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
属性名类型默认值说明
typestring"form" 指定为 Form 渲染器
modestringnormal表单展示方式,可以是:normalhorizontal 或者 inline
horizontalObject{"left":"col-sm-2", "right":"col-sm-10", "offset":"col-sm-offset-2"}当 mode 为 horizontal 时有用,用来控制 label
titlestring"表单"Form 的标题
submitTextString"提交"默认的提交按钮名称,如果设置成空,则可以把默认按钮去掉。
classNamestring外层 Dom 的类名
controlsArray<表单项>Form 表单项集合
actionsArray<表单项>Form 提交按钮,成员为 Action
messagesObject消息提示覆写,默认消息读取的是 API 返回的消息,但是在此可以覆写它。
messages.fetchSuccessstring获取成功时提示
messages.fetchFailedstring获取失败时提示
messages.saveSuccessstring保存成功时提示
messages.saveFailedstring保存失败时提示
wrapWithPanelbooleantrue是否让 Form 用 panel 包起来,设置为 false 后,actions 将无效。
panelClassNamebooleantrue是否让 Form 用 panel 包起来,设置为 false 后,actions 将无效。
apiAPIForm 用来保存数据的 api。
initApiAPIForm 用来获取初始数据的 api。
intervalnumber3000刷新时间(最低 3000)
silentPollingbooleanfalse配置刷新时是否显示加载动画
stopAutoRefreshWhenstring""通过表达式 来配置停止刷新的条件
initAsyncApiAPIForm 用来获取初始数据的 api,与 initApi 不同的是,会一直轮训请求该接口,直到返回 finished 属性为 true 才 结束。
initFetchbooleantrue设置了 initApi 或者 initAsyncApi 后,默认会开始就发请求,设置为 false 后就不会起始就请求接口
initFetchOnstring用表达式来配置
initFinishedFieldstringfinished设置了 initAsyncApi 后,默认会从返回数据的 data.finished 来判断是否完成,也可以设置成其他的 xxx,就会从 data.xxx 中获取
initCheckIntervalnumber3000设置了 initAsyncApi 以后,默认拉取的时间间隔
asyncApiAPI设置此属性后,表单提交发送保存接口后,还会继续轮训请求该接口,直到返回 finished 属性为 true 才 结束。
checkIntervalnumber3000轮训请求的时间间隔,默认为 3 秒。设置 asyncApi 才有效
finishedFieldstring"finished"如果决定结束的字段名不是 finished 请设置此属性,比如 is_success
submitOnChangebooleanfalse表单修改即提交
submitOnInitbooleanfalse初始就提交一次
resetAfterSubmitbooleanfalse提交后是否重置表单
primaryFieldstring"id"设置主键 id, 当设置后,检测表单是否完成时(asyncApi),只会携带此数据。
targetstring默认表单提交自己会通过发送 api 保存数据,但是也可以设定另外一个 form 的 name 值,或者另外一个 CRUD 模型的 name 值。 如果 target 目标是一个 Form ,则目标 Form 会重新触发 initApi,api 可以拿到当前 form 数据。如果目标是一个 CRUD 模型,则目标模型会重新触发搜索,参数为当前 Form 数据。当目标是 window 时,会把当前表单的数据附带到页面地址上。
redirectstring设置此属性后,Form 保存成功后,自动跳转到指定页面。支持相对地址,和绝对地址(相对于组内的)。
reloadstring操作完后刷新目标对象。请填写目标组件设置的 name 值,如果填写为 window 则让当前页面整体刷新。
autoFocusbooleanfalse是否自动聚焦。
canAccessSuperDatabooleantrue指定是否可以自动获取上层的数据并映射到表单项上
persistDatabooleantrue指定表单是否开启本地缓存
clearPersistDataAfterSubmitbooleantrue指定表单提交成功后是否清除本地缓存
namestring设置一个名字后,方便其他组件与其通信
\n", + "html": "

表单是 amis 中核心组件之一,主要作用是提交或者展示表单数据。

\n

基本用法

最基本的用法是配置 表单项 和 提交接口api

\n

如下我们配置姓名和邮箱表单项,并可以填写数据并提交给接口/api/mock2/form/saveForm

\n
\n

表单展示

默认模式

默认展示模式为文字表单项分行显示

\n
\n

水平模式

水平模式,左右摆放,左右比率分配。

\n
\n

可以配置horizontal属性,调整偏移量,格式如下:

\n
"horizontal": {\n    "left": 2,\n    "right": 10,\n    "offset": 2\n}\n
\n

内联模式

使用内联模式展现表单项

\n
\n

实现一行展示多个表单项

使用 group 实现一行显示多个表单项

\n
\n

底部按钮栏

隐藏默认提交按钮

Form 默认会在底部渲染一个提交按钮,用于执行表单的提交行为。你可以通过两种方式去掉这个默认的提交按钮:

\n
    \n
  1. 配置:"submitText": ""
  2. \n
  3. 配置:"actions": []
  4. \n
\n
\n

配置若干自定义按钮

同样,你可以通过 actions 属性,配置任意你想要的行为按钮。

\n
\n

请记住,如果想触发表单提交行为,请配置"actionType": "submit""type": "submit"按钮

\n

去掉表单边框

通过配置"wrapWithPanel": false,可以去掉默认表单边框(包括标题,按钮栏以及边距样式等)。

\n
\n

注意!配置该属性后,titleactions属性将失效并无法渲染,请在表单内自行配置。

\n

固定底部栏

如果表单项较多导致表单过长,而不方便操作底部的按钮栏,可以配置"affixFooter": true属性,将底部按钮栏固定在浏览器底部

\n

表单项数据初始化

表单可以通过配置initApi,实现表单初始化时请求接口,用于展示数据或初始化表单项。

\n
\n

轮训初始化请求

Form 支持轮训初始化接口,步骤如下:

\n
    \n
  1. 配置initApi
  2. \n
  3. 配置 interval:单位为ms,最低值3000,低于该值按3000处理
  4. \n
\n
\n

如果希望在满足某个条件的情况下停止轮训,配置stopAutoRefreshWhen表达式。

\n
\n

表单提交

配置api属性,当表单执行提交行为时,会默认将当前表单数据域中的数据使用post方式发送给所配置api

\n
\n

点击提交按钮,会看到发送表单请求,请求数据体为:

\n
{\n  \"name\": \"xxx\",\n  \"email\": \"xxx@xx.com\"\n}\n
\n

当你需要配置特定的请求方式,请求体,header时,使用对象类型 api 配置,并使用 数据映射 进行数据配置。下面示例我们更改了请求方法为PUT,并在原提交数据的基础上添加一个字段"_from"。更多用法查看 API 文档数据映射文档

\n
\n

触发表单提交行为有下面几种方式:

\n
    \n
  1. 默认的提交按钮
  2. \n
  3. 为行为按钮配置"actionType": "submit"
  4. \n
  5. 配置"type": "submit"的按钮
  6. \n
\n

轮训提交请求

通过设置asyncApi,当表单提交发送保存接口后,还会继续轮训请求该接口,默认间隔为3秒,直到返回 finished 属性为 true 才 结束。

\n
\n

如果决定结束轮训的标识字段名不是 finished,请设置finishedField属性,比如:"finishedField": "is_success"

\n

重置表单

配置"type": "reset"或者"actionType": "reset"的按钮,可以实现点击重置表单项值。

\n
\n
\n

请注意:这里的重置是将表单数据域重置到初始状态而不是清空,如果你配置了初始化接口,那么重置操作是会将表单项重置至初始化表单项值

\n
\n

表单数据域调试

配置debug:true可以查看当前表单的数据域数据详情,方便数据映射、表达式等功能调试,如下,你可以修改表单项查看数据域变化

\n
\n
\n

该配置不会展示完整的数据链,只会展示当前表单的数据域

\n
\n

禁用数据链

默认表单是可以获取到完整数据链中的数据的,但是该默认行为不适用于所有场景,例如:

\n

在 CRUD 的列表项中配置弹框,弹框中有一个表单,则该表单项中所有的同name表单项都会根据上层crud的行数据进行初始化,如果你是实现编辑的功能那并没有是什么问题,但是如果你是新建功能,那么这将不符合你的预期,你可以手动设置"canAccessSuperData": false来关闭该行为

\n

提交后行为

表单提交成功后,可以执行一些行为。

\n

重置表单

如果想提交表单成功后,重置当前表单至初始状态,可以配置"resetAfterSubmit": true

\n
\n

编辑表单项,点击提交,成功后会发现表单项的值会重置到初始状态,即空

\n
\n

注意,如果表单项有默认值,则会将该表单项的值重置至该默认值。

\n
\n

跳转页面

配置redirect属性,可以指定表单提交成功后要跳转至的页面

\n
\n

刷新目标组件

配置reload属性为其他组件name值,可以在表单提交成功之后,刷新指定组件。

\n
\n

上例中form提交成功后,会触发namemy_serviceService组件重新请求初始化接口

\n

上面示例是一种组件间联动

\n

将数据域发送给目标组件

配置target属性为目标组件name值,可以在触发提交行为后,将当前表单的数据域发送给目标组件。

\n
\n

第一个表单在提交时,会将它的表单数据域数据发送给detailForm表单,触发detailForm的初始化接口联动,重新请求接口更新数据域,并更新关键字表单项。

\n

上面示例组合使用了 组件间联动接口联动

\n

持久化保存表单项数据

表单默认在重置之后(切换页面、弹框中表单关闭表单),会自动清空掉表单中的所有数据,如果你想持久化保留当前表单项的数据而不清空它,那么配置persistData:true

\n

如果想提交成功后,清空该缓存,则配置"clearPersistDataAfterSubmit": true

\n

属性表

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
属性名类型默认值说明
typestring"form" 指定为 Form 渲染器
namestring设置一个名字后,方便其他组件与其通信
modestringnormal表单展示方式,可以是:normalhorizontal 或者 inline
horizontalObject{"left":"col-sm-2", "right":"col-sm-10", "offset":"col-sm-offset-2"}当 mode 为 horizontal 时有用,用来控制 label
titlestring"表单"Form 的标题
submitTextString"提交"默认的提交按钮名称,如果设置成空,则可以把默认按钮去掉。
classNamestring外层 Dom 的类名
controlsArray<表单项>Form 表单项集合
actionsArray<表单项>Form 提交按钮,成员为 Action
messagesObject消息提示覆写,默认消息读取的是 API 返回的消息,但是在此可以覆写它。
messages.fetchSuccessstring获取成功时提示
messages.fetchFailedstring获取失败时提示
messages.saveSuccessstring保存成功时提示
messages.saveFailedstring保存失败时提示
wrapWithPanelbooleantrue是否让 Form 用 panel 包起来,设置为 false 后,actions 将无效。
panelClassNamebooleantrue是否让 Form 用 panel 包起来,设置为 false 后,actions 将无效。
apiAPIForm 用来保存数据的 api。
initApiAPIForm 用来获取初始数据的 api。
intervalnumber3000刷新时间(最低 3000)
silentPollingbooleanfalse配置刷新时是否显示加载动画
stopAutoRefreshWhenstring""通过表达式 来配置停止刷新的条件
initAsyncApiAPIForm 用来获取初始数据的 api,与 initApi 不同的是,会一直轮训请求该接口,直到返回 finished 属性为 true 才 结束。
initFetchbooleantrue设置了 initApi 或者 initAsyncApi 后,默认会开始就发请求,设置为 false 后就不会起始就请求接口
initFetchOnstring用表达式来配置
initFinishedFieldstringfinished设置了 initAsyncApi 后,默认会从返回数据的 data.finished 来判断是否完成,也可以设置成其他的 xxx,就会从 data.xxx 中获取
initCheckIntervalnumber3000设置了 initAsyncApi 以后,默认拉取的时间间隔
asyncApiAPI设置此属性后,表单提交发送保存接口后,还会继续轮训请求该接口,直到返回 finished 属性为 true 才 结束。
checkIntervalnumber3000轮训请求的时间间隔,默认为 3 秒。设置 asyncApi 才有效
finishedFieldstring"finished"如果决定结束的字段名不是 finished 请设置此属性,比如 is_success
submitOnChangebooleanfalse表单修改即提交
submitOnInitbooleanfalse初始就提交一次
resetAfterSubmitbooleanfalse提交后是否重置表单
primaryFieldstring"id"设置主键 id, 当设置后,检测表单是否完成时(asyncApi),只会携带此数据。
targetstring默认表单提交自己会通过发送 api 保存数据,但是也可以设定另外一个 form 的 name 值,或者另外一个 CRUD 模型的 name 值。 如果 target 目标是一个 Form ,则目标 Form 会重新触发 initApi,api 可以拿到当前 form 数据。如果目标是一个 CRUD 模型,则目标模型会重新触发搜索,参数为当前 Form 数据。当目标是 window 时,会把当前表单的数据附带到页面地址上。
redirectstring设置此属性后,Form 保存成功后,自动跳转到指定页面。支持相对地址,和绝对地址(相对于组内的)。
reloadstring操作完后刷新目标对象。请填写目标组件设置的 name 值,如果填写为 window 则让当前页面整体刷新。
autoFocusbooleanfalse是否自动聚焦。
canAccessSuperDatabooleantrue指定是否可以自动获取上层的数据并映射到表单项上
persistDatabooleantrue指定表单是否开启本地缓存
clearPersistDataAfterSubmitbooleantrue指定表单提交成功后是否清除本地缓存
trimValuesbooleanfalsetrim 当前表单项的每一个值
\n", "toc": { "label": "目录", "type": "toc", @@ -167,12 +167,6 @@ amis.define('docs/components/form/index.md', function(require, exports, module, "fullPath": "#%E6%8C%81%E4%B9%85%E5%8C%96%E4%BF%9D%E5%AD%98%E8%A1%A8%E5%8D%95%E9%A1%B9%E6%95%B0%E6%8D%AE", "level": 2 }, - { - "label": "修改表单项变化方式", - "fragment": "%E4%BF%AE%E6%94%B9%E8%A1%A8%E5%8D%95%E9%A1%B9%E5%8F%98%E5%8C%96%E6%96%B9%E5%BC%8F", - "fullPath": "#%E4%BF%AE%E6%94%B9%E8%A1%A8%E5%8D%95%E9%A1%B9%E5%8F%98%E5%8C%96%E6%96%B9%E5%BC%8F", - "level": 2 - }, { "label": "属性表", "fragment": "%E5%B1%9E%E6%80%A7%E8%A1%A8", diff --git a/gh-pages/docs/components/form/input-group.html b/gh-pages/docs/components/form/input-group.html index a347df898..79fc59830 100644 --- a/gh-pages/docs/components/form/input-group.html +++ b/gh-pages/docs/components/form/input-group.html @@ -14,7 +14,7 @@ - +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + \n

tip: 默认 amis 在解析模板字符串时,遇到$字符会尝试去解析该变量并替换改模板变量,如果你想输出纯文本"${xxx}""$xxx",那么需要在$前加转义字符"\\\\",即"\\\\${xxx}"

\n
\n

支持链式取值

可以使用.进行链式取值

\n
\n

自定义 api 请求体数据格式

在表单提交接口时,amis 默认的请求体数据格式可能不符合你的预期,不用担心,你可以使用数据映射定制想要的数据格式:

\n

查看下面这种场景:

\n
\n

当输入姓名:rick 和邮箱:`rick@gmail.com后,form` 获取当前的数据域,提交后端接口的数据格式应该是这样的:

\n
{\n  \"name\": \"rick\",\n  \"email\": \"rick@gmail.com\"\n}\n
\n

遗憾的是,你的后端接口只支持的如下的输入数据结构,且无法修改:

\n
{\n  \"userName\": \"xxx\",\n  \"userEmail\": \"xxx@xxx.com\"\n}\n
\n

这时,除了直接更改你的 姓名表单项 和 邮箱表单项 的name属性为相应的字段以外,你可以配置apidata属性,使用数据映射轻松实现数据格式的自定义:

\n
\n

你可以查看网络面板,发送给后端接口的数据体应该已经成功修改为:

\n
{\n  \"userName\": \"rick\",\n  \"userEmail\": \"rick@gmail.com\"\n}\n
\n

复杂配置

展开所配置的数据

可以使用"&",作为数据映射 key,展开所配置的变量,例如:

\n

下面例子中,我们想在提交的时候,除了提交 nameemail 变量以外,还想添加 c 下面的所有变量 e,f,g,但是按照之前所讲的, api 应该这么配置:

\n
\n

点击提交查看网络面板数据,你会发现数据是符合预期的:

\n
{\n  \"name\": \"rick\",\n  \"email\": \"rick@gmail.comn\",\n  \"e\": \"3\",\n  \"f\": \"4\",\n  \"g\": \"5\"\n}\n
\n

但是当变量字段过多的时候,你需要一一映射配置,也许有点麻烦,所以可以使用"&"标识符,来展开所配置变量:

\n
\n

上例中我们 api.data 配置如下:

\n
\"data\": {\n  \"name\": \"${name}\",\n  \"email\": \"${email}\",\n  \"&\": \"${c}\"\n}\n
\n

"&"标识符会将所配置的c变量的value值,展开并拼接在data中。查看网络面板可以看到数据如下:

\n
{\n  \"name\": \"rick\",\n  \"email\": \"rick@gmail.comn\",\n  \"e\": \"3\",\n  \"f\": \"4\",\n  \"g\": \"5\"\n}\n
\n

数组提取值

\n

上例中的apidata配置格式如下:

\n
\"data\": {\n    \"items\": {\n      \"$table\": {\n        \"a\": \"${a}\",\n        \"c\": \"${c}\"\n      }\n    }\n}\n
\n

这个配置的意思是,只提取table数组中的a变量和c变量,组成新的数组,赋值给items变量

\n

点击提交,查看浏览器网络面板可以发现,表单的提交数据结构如下:

\n
{\n  \"items\": [\n    {\n      \"a\": \"a1\",\n      \"c\": \"c1\"\n    },\n    {\n      \"a\": \"a2\",\n      \"c\": \"c2\"\n    },\n    {\n      \"a\": \"a3\",\n      \"c\": \"c3\"\n    }\n  ]\n}\n
\n

过滤器

过滤器是对数据映射的一种增强,它的作用是对获取数据做一些处理,基本用法如下:

\n
${xxx [ |filter1 |filter2...] }\n

下面我们会逐一介绍每一个过滤器的用法。

\n
\n

过滤器可以 串联使用

\n
\n

html

用于显示 html 文本。

\n
基本用法
${xxx | html}\n
\n

raw

不同场景下,在使用数据映射时,amis 可能默认会使用html过滤器对数据进行转义显示,这时如果想要输出原始文本,请配置raw过滤器。

\n
基本用法

使用raw可以直接输出原始文本

\n
${xxx | raw}\n
\n
\n

注意!!!

\n

raw过滤器虽然支持显示原始文本,也就意味着可以输出 HTML 片段,但是动态渲染 HTML 是非常危险的,容易导致 XSS 攻击。

\n

因此在 使用raw过滤器的时候,请确保变量的内容可信,且永远不要渲染用户填写的内容。

\n
\n

json

用于将数据转换为json格式字符串

\n
基本用法
${xxx | json[:tabSize]}\n
\n
指定缩进数
${xxx|json:4} // 指定缩进为4个空格\n

toJson

json相反,用于将json格式的字符串,转换为javascript对象

\n
${xxx | toJson}\n
\n

Javascript的直接输出会显示[object Object],你可以使用 json 过滤器 来格式化显示json文本。

\n

date

日期格式化过滤器,用于把特定时间值按指定格式输出。

\n
基本用法
${xxx | date[:format][:inputFormat]}\n
\n

具体参数的配置需要参考 moment

\n
\n
配置输出格式

例如你想将某一个时间值,以 2020-04-14 这样的格式输出,那么查找 moment 文档可知配置格式应为 YYYY-MM-DD,即:

\n
\n
配置数据格式

如果你的数据值默认不是X格式(即时间戳格式),那么需要配置inputformat参数用于解析当前时间值,例如:

\n
\n
\n

注意: 在过滤器参数中使用:字符,需要在前面加\\\\转义字符

\n
\n

number

自动给数字加千分位。

\n
基本用法
${xxx | number}\n
\n

trim

把变量值前后多余的空格去掉。

\n
基本用法
${xxx | trim}\n

percent

基本用法
${xxx | percent[:decimals]}\n
\n
\n
指定小数点后位数
\n

round

四舍五入取整

\n
${xxx | round[:decimals]}\n
\n
\n
指定小数点后位数
\n

truncate

当超出若干个字符时,后面的部分直接显示某串字符

\n
基本用法
${xxx | truncate[:length][:mask]}\n
\n
\n

url_encode

效果同 encodeURIComponent() - JavaScript | MDN

\n
基本用法
${xxx | url_encode}\n

url_decode

效果同 decodeURIComponent() - JavaScript | MDN

\n
基本用法
${xxx | url_decode}\n

default

当变量值为空时,显示其他值代替。

\n
基本用法
${xxx | default[:defaultValue]}\n
\n
\n

split

可以将字符传通过分隔符分离成数组

\n
基本用法
${xxx | split[:delimiter]}\n
\n
\n

join

当变量值是数组时,可以把内容连接起来。

\n
基本用法
${xxx | join[:glue]}\n
\n
\n
配置连接符
\n

first

获取数组中的第一个值

\n
基本用法
${xxx | first}\n
\n

last

获取数组中的最后一个值

\n
基本用法
${xxx | last}\n
\n

nth

获取数组中的第n个值

\n
基本用法
${xxx | nth[:nth]}\n
\n
\n

注意: nth 配置0为获取第一个元素。

\n

pick

获取对象或数组中符合条件的筛选值

\n
基本用法
${xxx | pick[:path]}\n
\n
在对象中获取某个 key 值
\n
遍历对象数组获取指定值
\n
遍历数组对象,并自定义 key
\n

str2date

@todo

\n

duration

秒值格式化成时间格式

\n
基本用法
${xxx | duration}\n
\n

asArray

将数据包成数组

\n
基本用法
${xxx | asArray}\n
\n

lowerCase

将字符串转小写

\n
基本用法
${xxx | lowerCase}\n
\n

upperCase

将字符串转大写

\n
基本用法
${xxx | upperCase}\n
\n

base64Encode

base64 加密

\n
基本用法
${xxx | base64Encode}\n
\n

base64Decode

base64 解密

\n
基本用法
${xxx | base64Decode}\n
\n

isTrue

真值条件过滤器

\n
基本用法
${xxx | isTrue[:trueValue][:falseValue]\n
\n
\n

配置trueValuefalseValue时,如果想要返回当前数据域中某个变量的值,那么参数可以直接配置变量名而不需要在两边添加引号;如果想返回某字符串,那么需要给参数两边添加单引号或双引号,

\n

例如 ${xxx|isTrue:'foo':bar},当 xxx 变量为真,那么会返回 字符串'foo',如果不为真,那么返回数据域中 变量bar 的值。

\n
\n
\n
返回数据域中变量

参数中不添加引号,可以直接返回数据域中变量值

\n
\n

isFalse

假值条件过滤器

\n
基本用法
${xxx | isFalse[:falseValue][:trueValue]\n

用法与 isTrue 过滤器 相同,判断逻辑相反

\n

isMatch

模糊匹配条件过滤器

\n
基本用法
${xxx | isMatch[:matchParam][:trueValue][:falseValue]\n
\n
\n
返回数据域中变量

参数中不添加引号,可以直接返回数据域中变量值

\n
\n

notMatch

基本用法
${xxx | notMatch[:matchParam][:trueValue][:falseValue]\n

用法与 isMatch 相同,判断逻辑相反。

\n

isEquals

全等匹配过滤器

\n
基本用法
${xxx | isEquals[:equalsValue][:trueValue][:falseValue]\n
\n
\n
返回数据域中变量

参数中不添加引号,可以直接返回数据域中变量值

\n
\n

notEquals

不全等匹配过滤器

\n
基本用法
${xxx | notEquals[:equalsValue][:trueValue][:falseValue]\n

用法与 isEquals 相同,判断逻辑相反。

\n

filter

过滤数组,操作对象为数组,当目标对象不是数组时将无效。

\n
基本用法
${xxx | filter[:keys][:directive][:arg1]}\n
\n

串联使用过滤器

使用单一的过滤器可能无法满足你的所有需求,幸运的是 amis 支持串联使用过滤器,而前一个过滤器的值会作为下一个过滤器的入参,进行下一步处理。语法如下:

\n
${xxx|filter1|filter2|...}\n
先拆分字符串,再获取第 n 个值
\n

上例子中${value|split|first},会经历下面几个步骤:

\n
    \n
  1. 会先执行split过滤器,将字符串a,b,c,拆分成数组["a", "b", "c"]
  2. \n
  3. 然后将该数据传给下一个过滤器first,执行该过滤器,获取数组第一个元素,为"a"
  4. \n
  5. 输出"a"
  6. \n
\n", + "html": "

数据映射支持用户通过${xxx}$xxx获取当前数据链中某个变量的值,实现灵活的数据配置功能,主要用于模板字符串、 自定义 api 请求数据体格式等场景。

\n

模板字符串

\n

tip: 默认 amis 在解析模板字符串时,遇到$字符会尝试去解析该变量并替换改模板变量,如果你想输出纯文本"${xxx}""$xxx",那么需要在$前加转义字符"\\\\",即"\\\\${xxx}"

\n
\n

支持链式取值

可以使用.进行链式取值

\n
\n

自定义 api 请求体数据格式

在表单提交接口时,amis 默认的请求体数据格式可能不符合你的预期,不用担心,你可以使用数据映射定制想要的数据格式:

\n

查看下面这种场景:

\n
\n

当输入姓名:rick 和邮箱:`rick@gmail.com后,form` 获取当前的数据域,提交后端接口的数据格式应该是这样的:

\n
{\n  \"name\": \"rick\",\n  \"email\": \"rick@gmail.com\"\n}\n
\n

遗憾的是,你的后端接口只支持的如下的输入数据结构,且无法修改:

\n
{\n  \"userName\": \"xxx\",\n  \"userEmail\": \"xxx@xxx.com\"\n}\n
\n

这时,除了直接更改你的 姓名表单项 和 邮箱表单项 的name属性为相应的字段以外,你可以配置apidata属性,使用数据映射轻松实现数据格式的自定义:

\n
\n

你可以查看网络面板,发送给后端接口的数据体应该已经成功修改为:

\n
{\n  \"userName\": \"rick\",\n  \"userEmail\": \"rick@gmail.com\"\n}\n
\n

复杂配置

展开所配置的数据

可以使用"&",作为数据映射 key,展开所配置的变量,例如:

\n

下面例子中,我们想在提交的时候,除了提交 nameemail 变量以外,还想添加 c 下面的所有变量 e,f,g,但是按照之前所讲的, api 应该这么配置:

\n
\n

点击提交查看网络面板数据,你会发现数据是符合预期的:

\n
{\n  \"name\": \"rick\",\n  \"email\": \"rick@gmail.comn\",\n  \"e\": \"3\",\n  \"f\": \"4\",\n  \"g\": \"5\"\n}\n
\n

但是当变量字段过多的时候,你需要一一映射配置,也许有点麻烦,所以可以使用"&"标识符,来展开所配置变量:

\n
\n

上例中我们 api.data 配置如下:

\n
\"data\": {\n  \"name\": \"${name}\",\n  \"email\": \"${email}\",\n  \"&\": \"${c}\"\n}\n
\n

"&"标识符会将所配置的c变量的value值,展开并拼接在data中。查看网络面板可以看到数据如下:

\n
{\n  \"name\": \"rick\",\n  \"email\": \"rick@gmail.comn\",\n  \"e\": \"3\",\n  \"f\": \"4\",\n  \"g\": \"5\"\n}\n
\n

数组提取值

\n

上例中的apidata配置格式如下:

\n
\"data\": {\n    \"items\": {\n      \"$table\": {\n        \"a\": \"${a}\",\n        \"c\": \"${c}\"\n      }\n    }\n}\n
\n

这个配置的意思是,只提取table数组中的a变量和c变量,组成新的数组,赋值给items变量

\n

点击提交,查看浏览器网络面板可以发现,表单的提交数据结构如下:

\n
{\n  \"items\": [\n    {\n      \"a\": \"a1\",\n      \"c\": \"c1\"\n    },\n    {\n      \"a\": \"a2\",\n      \"c\": \"c2\"\n    },\n    {\n      \"a\": \"a3\",\n      \"c\": \"c3\"\n    }\n  ]\n}\n
\n

过滤器

过滤器是对数据映射的一种增强,它的作用是对获取数据做一些处理,基本用法如下:

\n
${xxx [ |filter1 |filter2...] }\n

下面我们会逐一介绍每一个过滤器的用法。

\n
\n

过滤器可以 串联使用

\n
\n

html

用于显示 html 文本。

\n
基本用法
${xxx | html}\n
\n

raw

不同场景下,在使用数据映射时,amis 可能默认会使用html过滤器对数据进行转义显示,这时如果想要输出原始文本,请配置raw过滤器。

\n
基本用法

使用raw可以直接输出原始文本

\n
${xxx | raw}\n
\n
\n

注意!!!

\n

raw过滤器虽然支持显示原始文本,也就意味着可以输出 HTML 片段,但是动态渲染 HTML 是非常危险的,容易导致 XSS 攻击。

\n

因此在 使用raw过滤器的时候,请确保变量的内容可信,且永远不要渲染用户填写的内容。

\n
\n

json

用于将数据转换为json格式字符串

\n
基本用法
${xxx | json[:tabSize]}\n
\n
指定缩进数
${xxx|json:4} // 指定缩进为4个空格\n

toJson

json相反,用于将json格式的字符串,转换为javascript对象

\n
${xxx | toJson}\n
\n

Javascript的直接输出会显示[object Object],你可以使用 json 过滤器 来格式化显示json文本。

\n

date

日期格式化过滤器,用于把特定时间值按指定格式输出。

\n
基本用法
${xxx | date[:format][:inputFormat]}\n
\n

具体参数的配置需要参考 moment

\n
\n
配置输出格式

例如你想将某一个时间值,以 2020-04-14 这样的格式输出,那么查找 moment 文档可知配置格式应为 YYYY-MM-DD,即:

\n
\n
配置数据格式

如果你的数据值默认不是X格式(即时间戳格式),那么需要配置inputformat参数用于解析当前时间值,例如:

\n
\n
\n

注意: 在过滤器参数中使用:字符,需要在前面加\\\\转义字符

\n
\n

number

自动给数字加千分位。

\n
基本用法
${xxx | number}\n
\n

trim

把变量值前后多余的空格去掉。

\n
基本用法
${xxx | trim}\n

percent

基本用法
${xxx | percent[:decimals]}\n
\n
\n
指定小数点后位数
\n

round

四舍五入取整

\n
${xxx | round[:decimals]}\n
\n
\n
指定小数点后位数
\n

truncate

当超出若干个字符时,后面的部分直接显示某串字符

\n
基本用法
${xxx | truncate[:length][:mask]}\n
\n
\n

url_encode

效果同 encodeURIComponent() - JavaScript | MDN

\n
基本用法
${xxx | url_encode}\n

url_decode

效果同 decodeURIComponent() - JavaScript | MDN

\n
基本用法
${xxx | url_decode}\n

default

当变量值为空时,显示其他值代替。

\n
基本用法
${xxx | default[:defaultValue]}\n
\n
\n

split

可以将字符传通过分隔符分离成数组

\n
基本用法
${xxx | split[:delimiter]}\n
\n
\n

join

当变量值是数组时,可以把内容连接起来。

\n
基本用法
${xxx | join[:glue]}\n
\n
\n
配置连接符
\n

first

获取数组中的第一个值

\n
基本用法
${xxx | first}\n
\n

last

获取数组中的最后一个值

\n
基本用法
${xxx | last}\n
\n

nth

获取数组中的第n个值

\n
基本用法
${xxx | nth[:nth]}\n
\n
\n

注意: nth 配置0为获取第一个元素。

\n

pick

获取对象或数组中符合条件的筛选值

\n
基本用法
${xxx | pick[:path]}\n
\n
在对象中获取某个 key 值
\n
遍历对象数组获取指定值
\n
遍历数组对象,并自定义 key
\n

duration

秒值格式化成时间格式

\n
基本用法
${xxx | duration}\n
\n

asArray

将数据包成数组

\n
基本用法
${xxx | asArray}\n
\n

lowerCase

将字符串转小写

\n
基本用法
${xxx | lowerCase}\n
\n

upperCase

将字符串转大写

\n
基本用法
${xxx | upperCase}\n
\n

base64Encode

base64 加密

\n
基本用法
${xxx | base64Encode}\n
\n

base64Decode

base64 解密

\n
基本用法
${xxx | base64Decode}\n
\n

isTrue

真值条件过滤器

\n
基本用法
${xxx | isTrue[:trueValue][:falseValue]\n
\n
\n

配置trueValuefalseValue时,如果想要返回当前数据域中某个变量的值,那么参数可以直接配置变量名而不需要在两边添加引号;如果想返回某字符串,那么需要给参数两边添加单引号或双引号,

\n

例如 ${xxx|isTrue:'foo':bar},当 xxx 变量为真,那么会返回 字符串'foo',如果不为真,那么返回数据域中 变量bar 的值。

\n
\n
\n
返回数据域中变量

参数中不添加引号,可以直接返回数据域中变量值

\n
\n

isFalse

假值条件过滤器

\n
基本用法
${xxx | isFalse[:falseValue][:trueValue]\n

用法与 isTrue 过滤器 相同,判断逻辑相反

\n

isMatch

模糊匹配条件过滤器

\n
基本用法
${xxx | isMatch[:matchParam][:trueValue][:falseValue]\n
\n
\n
返回数据域中变量

参数中不添加引号,可以直接返回数据域中变量值

\n
\n

notMatch

基本用法
${xxx | notMatch[:matchParam][:trueValue][:falseValue]\n

用法与 isMatch 相同,判断逻辑相反。

\n

isEquals

全等匹配过滤器

\n
基本用法
${xxx | isEquals[:equalsValue][:trueValue][:falseValue]\n
\n
\n
返回数据域中变量

参数中不添加引号,可以直接返回数据域中变量值

\n
\n

notEquals

不全等匹配过滤器

\n
基本用法
${xxx | notEquals[:equalsValue][:trueValue][:falseValue]\n

用法与 isEquals 相同,判断逻辑相反。

\n

filter

过滤数组,操作对象为数组,当目标对象不是数组时将无效。

\n
基本用法
${xxx | filter[:keys][:directive][:arg1]}\n
\n

串联使用过滤器

使用单一的过滤器可能无法满足你的所有需求,幸运的是 amis 支持串联使用过滤器,而前一个过滤器的值会作为下一个过滤器的入参,进行下一步处理。语法如下:

\n
${xxx|filter1|filter2|...}\n
先拆分字符串,再获取第 n 个值
\n

上例子中${value|split|first},会经历下面几个步骤:

\n
    \n
  1. 会先执行split过滤器,将字符串a,b,c,拆分成数组["a", "b", "c"]
  2. \n
  3. 然后将该数据传给下一个过滤器first,执行该过滤器,获取数组第一个元素,为"a"
  4. \n
  5. 输出"a"
  6. \n
\n", "toc": { "label": "目录", "type": "toc", @@ -171,12 +171,6 @@ amis.define('docs/concepts/data-mapping.md', function(require, exports, module, "fullPath": "#pick", "level": 3 }, - { - "label": "str2date", - "fragment": "str2date", - "fullPath": "#str2date", - "level": 3 - }, { "label": "duration", "fragment": "duration", diff --git a/gh-pages/docs/concepts/datascope-and-datachain.html b/gh-pages/docs/concepts/datascope-and-datachain.html index a347df898..79fc59830 100644 --- a/gh-pages/docs/concepts/datascope-and-datachain.html +++ b/gh-pages/docs/concepts/datascope-and-datachain.html @@ -14,7 +14,7 @@ - +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - +