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

实现方式
实现方式 1
trantor 提供了 GoBackWithContext 来为容器加载数据,步骤如下:
-
数据容器 A 中新增一个 Action, targetView 指向视图 B,openViewType 可以是 Dialog/Drawer/Columns 其中一种类型, 通常使用的是弹窗类型(Dialog)。
-
当 Action 被触发时,会以弹框形式打开视图 B,并在视图 B 的某个容器中指定一个 Action,指定属性 action=“GoBackWithContext”
-
当上一个步骤中的 Action 被触发时,会将当前的上下文数据带回到到数据容器 A,将结果作为数据来源回填至数据容器 A 中。若第一个步骤中的 Action 配置了 processFlow/processFunc,则回填数据会发送到后端指定的 flow/func 进行处理,再将处理后的返回结果回填至数据容器 A 中。
注意:数据容器 A 中的数据会根据 id 自动去重。
实现方式 2
-
在视图 A 使用 Controller 中打开视图 B,使用可 this.openView 方法,指定 openViewType 以及 payloadCallback 参数。
-
在试图 B 的某个容器中指定一个 Action,指定属性 action=“GoBackWithContext”
-
当上个步骤中的 Action 被触发时,会带着当前的上下文作为入参,调用步骤 1 中传入的 payloadCallback 方法
实现示例
考虑这个业务场景,通过选择物料来创建采购单,为每个采购单行填写采购数量并一次性提交。这个场景里涉及到从[物料]到[采购单行]的模型转换,且来源[物料]需要用户选择。同时转换出的[采购单行]是非持久化数据,需要使用 TableForm 和[采购单]一起提交。
<View version="2" title="创建采购单"> <TableForm model="OrderLine"> <Fields> <Field name="name" /> <Field name="price" /> </Fields> <Actions> <Action label="选择添加数据" targetView="viewB" openViewType="Dialog" processFlow="transformMaterialToOrderLineFlow" /> </Actions> </TableForm></View>
<View version="2" title="选择物料"> <Table model="Material"> <Fields> <Field name="name" /> <Field name="code" /> </Fields> <Actions> <!-- 带回选中的数据 --> <Action label="确定" multi="true" action="GoBackWithContext" /> </Actions> </Table></View>注意:当前例子为0.17.x 版本