数据回传(LoadAction实现)
数据回传(LoadAction实现)
当前页面数据需要从下一个页面获取。
常见场景如:
- 当前列表页面获取下一个列表页面的数据。

实现方式
实现方式1
trantor 提供了 LoadAction 和 PayloadAction 来为容器加载数据,步骤如下:
-
数据容器 A 中 LoadAction 可以指定一个 View Action(指向视图 B) 和一个 DataProcessorAction(当两个视图模型一致时可不实现)
-
当 LoadAction 被触发时,会以弹框形式打开视图 B,并在视图 B Footer 中显示 PayloadAction
-
当 PayloadAction 被触发时,会将当前 PayloadAction 的上下文数据带回到到数据容器 A,数据容器 A 会将上下文数据发送给 DataProcessorAction 处理,并将结果作为数据来源回填至数据容器 A 中
注意:数据容器 A 中的数据会根据 id 自动去重。
实现方式2
LoadAction 中的 action 还可以提供一个内置 View action:Upload ,直接让用户上传文件, 经过 Data Processor Action(入参为: base_UploadFile) 处理后回填至数据容器
实现方式3
LoadAction 还可以通过 Server Action 来加载数据.
实现示例
考虑这个业务场景,通过选择物料来创建采购单,为每个采购单行填写采购数量并一次性提交。这个场景里涉及到从[物料]到[采购单行]的模型转换,且来源[物料]需要用户选择。同时转换出的[采购单行]是非持久化数据,需要使用 TableForm 和[采购单]一起提交。
<View title="创建采购单"> <TableForm model="OrderLine"> <Fields> <Field name="name" /> <Field name="price" /> </Fields> <Actions> <!-- ChooseMaterial Action 会打开一个视图加载数据, 数据经过 TransformMaterialToOrderLine 处理后返回给 TableForm --> <LoadAction label="选择" action="ChooseMaterial" dataProcessorAction="TransformMaterialToOrderLine" /> <LoadAction label="添加全部" action="loadAll" /> <LoadAction label="上传" action="Upload" dataProcessorAction="transformData" /> </Actions> </TableForm></View>
<View title="选择物料"> <Table model="Material"> <Fields> <Field name="name" /> <Field name="code" /> </Fields> <Actions> <!-- 带回选中的数据 --> <PayloadAction label="确定" multi /> </Actions> </Table></View>