logologo
开始
教程
手册
开发
插件
API
首页
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
开始
教程
手册
开发
插件
API
首页
logologo
RunJS 概述
导入模块
容器内渲染

全局变量

window
document
navigator

ctx

ctx.blockModel
ctx.collection
ctx.collectionField
ctx.dataSource
ctx.dataSourceManager
ctx.element
ctx.exit()
ctx.exitAll()
ctx.filterManager
ctx.form
ctx.getModel()
ctx.getValue()
ctx.getVar()
ctx.i18n
ctx.importAsync()
ctx.initResource()
ctx.libs
ctx.location
ctx.logger
ctx.makeResource()
ctx.message
ctx.modal
ctx.model
ctx.notification
ctx.off()
ctx.on()
ctx.openView()
ctx.render()
ctx.request()
ctx.requireAsync()
ctx.resource
ctx.route
ctx.router
ctx.setValue()
ctx.sql
ctx.t()
ctx.view
Previous Pagectx.message
Next Pagectx.model

#ctx.modal

基于 Ant Design Modal 的快捷 API,用于在 RunJS 中主动打开模态框(信息提示、确认弹窗等)。由 ctx.viewer / 视图系统实现。

#适用场景

场景说明
JSBlock / JSField用户交互后显示操作结果、错误提示或二次确认
事件流 / 操作事件提交前弹窗确认,用户取消时通过 ctx.exit() 终止后续步骤
联动规则校验失败时弹窗提示用户

注意:ctx.modal 在存在视图上下文的 RunJS 环境中可用(如页面内的 JSBlock、事件流等);在后端或无 UI 上下文中可能不存在,使用时建议做可选链判断(ctx.modal?.confirm?.())。

#类型定义

modal: {
  info: (config: ModalConfig) => Promise<void>;
  success: (config: ModalConfig) => Promise<void>;
  error: (config: ModalConfig) => Promise<void>;
  warning: (config: ModalConfig) => Promise<void>;
  confirm: (config: ModalConfig) => Promise<boolean>;  // 用户点确定返回 true,取消返回 false
};

ModalConfig 与 Ant Design Modal 的静态方法配置一致。

#常用方法

方法返回值说明
info(config)Promise<void>信息提示弹窗
success(config)Promise<void>成功提示弹窗
error(config)Promise<void>错误提示弹窗
warning(config)Promise<void>警告提示弹窗
confirm(config)Promise<boolean>确认弹窗,用户点确定返回 true,取消返回 false

#配置参数

与 Ant Design Modal 一致,常用字段包括:

参数类型说明
titleReactNode标题
contentReactNode内容
okTextstring确认按钮文案
cancelTextstring取消按钮文案(仅 confirm)
onOk() => void | Promise<void>点击确认时执行
onCancel() => void点击取消时执行

#与 ctx.message、ctx.openView 的关系

用途推荐用法
轻量临时提示ctx.message,自动消失
信息/成功/错误/警告弹窗ctx.modal.info / success / error / warning
二次确认(需用户选择)ctx.modal.confirm,配合 ctx.exit() 控制流程
复杂表单、列表等交互ctx.openView 打开自定义视图(页面/抽屉/弹窗)

#示例

#简单信息弹窗

ctx.modal.info({
  title: '提示',
  content: '操作已完成',
});

#确认弹窗并控制流程

const confirmed = await ctx.modal.confirm({
  title: '确认删除',
  content: '确定要删除这条记录吗?',
  okText: '确定',
  cancelText: '取消',
});
if (!confirmed) {
  ctx.exit();  // 用户取消时终止后续步骤
  return;
}
await ctx.runAction('destroy', { filterByTk: ctx.record?.id });

#带 onOk 的确认弹窗

await ctx.modal.confirm({
  title: '确认提交',
  content: '提交后将无法修改,确定继续?',
  async onOk() {
    await ctx.form.submit();
  },
});

#错误提示

try {
  await someOperation();
  ctx.modal.success({ title: '成功', content: '操作已完成' });
} catch (e) {
  ctx.modal.error({ title: '错误', content: e.message });
}

#相关

  • ctx.message:轻量临时提示,自动消失
  • ctx.exit():用户取消确认时,常用 if (!confirmed) ctx.exit() 终止流程
  • ctx.openView():打开自定义视图,适合复杂交互