以编程方式打开指定视图(抽屉、弹窗、内嵌页等)。由 FlowModelContext 提供,用于在 JSBlock、表格单元格、事件流等场景中打开已配置的 ChildPage 或 PopupAction 视图。
| 场景 | 说明 |
|---|---|
| JSBlock | 按钮点击后打开详情/编辑弹窗,传入当前行 filterByTk |
| 表格单元格 | 在单元格中渲染按钮,点击打开行详情弹窗 |
| 事件流 / JSAction | 在操作成功后打开下一个视图或弹窗 |
| 关联字段 | 通过 ctx.runAction('openView', params) 打开选择/编辑弹窗 |
注意:
ctx.openView需在存在 FlowModel 上下文的 RunJS 环境中可用;若 uid 对应的模型不存在,会自动创建 PopupActionModel 并持久化。
视图模型的唯一标识。若不存在则会自动创建并保存。建议使用稳定的 UID,如 ${ctx.model.uid}-detail,以便多次打开同一弹窗时复用配置。
| 字段 | 类型 | 说明 |
|---|---|---|
mode | drawer / dialog / embed | 打开方式:抽屉、弹窗、内嵌,默认 drawer |
size | small / medium / large | 弹窗/抽屉尺寸,默认 medium |
title | string | 视图标题 |
params | Record<string, any> | 传给视图的任意参数 |
filterByTk | any | 主键值,用于单条详情/编辑场景 |
sourceId | string | 来源记录 ID,关联场景使用 |
dataSourceKey | string | 数据源 |
collectionName | string | 数据表名 |
associationName | string | 关联字段名 |
navigation | boolean | 是否使用路由导航,传 defineProperties / defineMethods 时会被强制设为 false |
preventClose | boolean | 是否阻止关闭 |
defineProperties | Record<string, PropertyOptions> | 向视图内模型动态注入属性 |
defineMethods | Record<string, Function> | 向视图内模型动态注入方法 |
当模型配置了 openView 动作(如关联字段、可点击字段)时,可调用:
| 用途 | 推荐用法 |
|---|---|
| 打开已配置的流程视图 | ctx.openView(uid, options) |
| 打开自定义 content(无流程) | ctx.viewer.dialog() / ctx.viewer.drawer() |
| 操作当前打开的视图 | ctx.view.close()、ctx.view.inputArgs |
ctx.openView 打开的是 FlowPage(ChildPageModel),内部会渲染完整流程页面;ctx.viewer 打开的是任意 React 内容。
ctx.model.uid 关联(如 ${ctx.model.uid}-xxx),避免多个区块冲突defineProperties / defineMethods 时,navigation 会被强制设为 false,以防止刷新后上下文丢失ctx.view 指向当前视图实例,ctx.view.inputArgs 可读取打开时传入的参数