跳转到内容

数据回传(LoadAction实现)

数据回传(LoadAction实现)

当前页面数据需要从下一个页面获取。

常见场景如:

  1. 当前列表页面获取下一个列表页面的数据。

custom-container

实现方式

实现方式1

trantor 提供了 LoadAction 和   PayloadAction 来为容器加载数据,步骤如下:

  1. 数据容器 A 中 LoadAction 可以指定一个 View Action(指向视图 B) 和一个 DataProcessorAction(当两个视图模型一致时可不实现)

  2. 当 LoadAction 被触发时,会以弹框形式打开视图 B,并在视图 B Footer 中显示 PayloadAction

  3. 当  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>