组件:对话框

对话框组件是一个用于在页面中弹出自定义内容窗口的不可视组件,支持设置标题、内容(视图/HTML/URL)、宽度、高度、最大高度,并可控制点击遮罩层是否关闭。它常用于信息确认、表单编辑、内容展示等需要临时浮层交互的场景。

典型使用场景:

  • 信息确认(删除确认、操作确认)
  • 表单编辑(在弹窗中编辑数据)
  • 内容展示(详情查看、图片放大)
  • 通知提示(重要通知、系统消息)
  • 自定义弹窗(替代浏览器原生 alert/confirm)

快速索引

你想知道什么直接看这里
如何设置对话框标题标题 属性
如何设置对话框尺寸宽度 / 高度 / 最大高度 属性
如何设置对话框内容(视图组件)置视图(视图对象)
如何设置对话框内容(HTML)置HTML(HTML内容)
如何加载外部页面加载URL(URL地址)
如何显示对话框显示()
如何关闭对话框关闭()
如何监听关闭事件置被关闭回调(回调函数)
如何控制点击遮罩是否关闭点击遮罩层关闭 属性

基础示例

最简单的对话框使用流程:创建对话框 → 设置内容 → 显示 → 关闭。

变量 对话框1 = 创建 对话框()

' 1. 设置基本属性
对话框1.标题 = "提示"
对话框1.宽度 = 400
对话框1.高度 = 200
对话框1.最大高度 = 500
对话框1.点击遮罩层关闭 = 真

' 2. 设置内容(HTML 方式)
对话框1.置HTML("<p style='padding:20px;'>这是一个简单的对话框内容</p>")

' 3. 设置关闭回调
对话框1.置被关闭回调((源对象) => {
    调试输出("对话框已关闭")
})

' 4. 显示对话框
对话框1.显示()

' 5. 延时自动关闭
延时执行(() => {
    对话框1.关闭()
}, 5000)

综合示例:表单编辑对话框

本示例展示一个完整的表单编辑对话框,包含输入字段、保存/取消按钮,并演示数据回填和保存逻辑。

' ========== 创建对话框 ==========
变量 编辑对话框 = 创建 对话框()
编辑对话框.标题 = "编辑用户信息"
编辑对话框.宽度 = 480
编辑对话框.高度 = 360
编辑对话框.最大高度 = 500
编辑对话框.点击遮罩层关闭 = 假  ' 禁止点击遮罩关闭,防止误操作

' ========== 创建对话框内容(使用视图组件) ==========
' 创建一个弹性布局作为内容容器
变量 内容容器 = 创建 弹性布局()
内容容器.方向 = "column"
内容容器.内边距 = "20px"
内容容器.宽度 = 匹配父

' 姓名输入
变量 姓名标签 = 创建 标签()
姓名标签.文本 = "姓名"
姓名标签.字体大小 = "14px"
姓名标签.文本颜色 = "#666"
姓名标签.内边距 = "0 0 4px 0"
内容容器.添加组件(姓名标签)

变量 姓名输入 = 创建 单行输入框()
姓名输入.宽度 = 匹配父
姓名输入.高度 = 36
姓名输入.提示文本 = "请输入姓名"
姓名输入.边框 = "1px solid #d9d9d9"
姓名输入.边框圆角 = "4px"
姓名输入.内边距 = "8px 12px"
内容容器.添加组件(姓名输入)

' 邮箱输入
变量 邮箱标签 = 创建 标签()
邮箱标签.文本 = "邮箱"
邮箱标签.字体大小 = "14px"
邮箱标签.文本颜色 = "#666"
邮箱标签.内边距 = "12px 0 4px"
内容容器.添加组件(邮箱标签)

变量 邮箱输入 = 创建 单行输入框()
邮箱输入.宽度 = 匹配父
邮箱输入.高度 = 36
邮箱输入.提示文本 = "请输入邮箱"
邮箱输入.边框 = "1px solid #d9d9d9"
邮箱输入.边框圆角 = "4px"
邮箱输入.内边距 = "8px 12px"
内容容器.添加组件(邮箱输入)

' 按钮组(使用弹性布局水平排列)
变量 按钮组 = 创建 弹性布局()
按钮组.方向 = "row"
按钮组.主轴对齐 = "flex-end"
按钮组.间距 = 12
按钮组.内边距 = "16px 0 0 0"
内容容器.添加组件(按钮组)

变量 取消按钮 = 创建 按钮()
取消按钮.文本 = "取消"
取消按钮.宽度 = 80
取消按钮.高度 = 36
取消按钮.背景颜色 = "#d9d9d9"
取消按钮.文本颜色 = "#333"
取消按钮.边框圆角 = "4px"
按钮组.添加组件(取消按钮)

变量 保存按钮 = 创建 按钮()
保存按钮.文本 = "保存"
保存按钮.宽度 = 80
保存按钮.高度 = 36
保存按钮.背景颜色 = "#1890ff"
保存按钮.文本颜色 = "#ffffff"
保存按钮.边框圆角 = "4px"
按钮组.添加组件(保存按钮)

' ========== 设置对话框内容 ==========
编辑对话框.置视图(内容容器)

' ========== 数据回填(模拟编辑场景) ==========
函数 打开编辑对话框(用户名, 邮箱)
    姓名输入.内容 = 用户名
    邮箱输入.内容 = 邮箱
    编辑对话框.显示()
结束 函数

' ========== 按钮事件绑定 ==========
取消按钮.置被单击回调((源对象) => {
    编辑对话框.关闭()
})

保存按钮.置被单击回调((源对象) => {
    变量 姓名 = 删首尾空(姓名输入.内容)
    变量 邮箱 = 删首尾空(邮箱输入.内容)
    
    如果(姓名 == "")
        弹出提示("请输入姓名")
        姓名输入.获取焦点()
        返回
    结束 如果
    如果(邮箱 == "")
        弹出提示("请输入邮箱")
        邮箱输入.获取焦点()
        返回
    结束 如果
    
    弹出提示("保存成功!\n姓名:" + 姓名 + "\n邮箱:" + 邮箱)
    编辑对话框.关闭()
})

' ========== 对话框关闭回调 ==========
编辑对话框.置被关闭回调((源对象) => {
    调试输出("编辑对话框已关闭")
})

' ========== 打开对话框(模拟点击编辑按钮) ==========
' 实际使用中,可由某个按钮触发
延时执行(() => {
    打开编辑对话框("张三", "zhangsan@example.com")
}, 500)

属性详解

标题

  • 类型: 文本型
  • 说明: 设置或获取对话框的标题文本,显示在对话框顶部。若为空,标题栏可能仍保留(取决于组件实现)。

宽度

  • 类型: 文本型数值型
  • 说明: 设置或获取对话框内容区域的宽度。支持数值(默认像素)或带单位的字符串(如 "80%")。

高度

  • 类型: 文本型数值型
  • 说明: 设置或获取对话框内容区域的高度。支持数值或带单位的字符串。

最大高度

  • 类型: 文本型数值型
  • 说明: 设置或获取对话框内容区域的最大高度。当内容超出时,会出现滚动条。

点击遮罩层关闭

  • 类型: 逻辑型
  • 说明: 设置或获取点击对话框背景遮罩层时是否关闭对话框。默认为 (不关闭)。若设为 ,用户点击遮罩即可关闭,适合轻量提示场景。

函数详解

置视图(视图对象 | HTML | DOM节点)

  • 功能: 设置对话框的内容区域,支持传入视图组件、HTML 字符串或原生 DOM 节点。
  • 参数:
    • 视图对象:继承自 视图 的组件实例(如 标签弹性布局 等)
    • HTML:文本型 HTML 字符串
    • DOM节点:原生 DOM 元素
  • 返回值: 无。
  • 示例: 对话框1.置视图(面板1)

置HTML(HTML内容)

  • 功能: 设置对话框内容为 HTML 字符串,与 置视图 的 HTML 模式等效。
  • 参数: HTML内容(文本型)
  • 返回值: 无。
  • 示例: 对话框1.置HTML("<p>Hello</p>")

加载URL(URL地址)

  • 功能: 在对话框内容区域中加载并显示指定 URL 的页面(通过 <iframe> 实现)。
  • 参数: URL地址(文本型)
  • 返回值: 无。
  • 示例: 对话框1.加载URL("https://example.com")

显示()

  • 功能: 显示对话框(触发弹出动画)。若对话框已显示,重复调用无效果。
  • 返回值: 无。
  • 示例: 对话框1.显示()

关闭()

  • 功能: 关闭对话框(触发关闭动画),并从 DOM 中移除。会触发 置被关闭回调
  • 返回值: 无。
  • 示例: 对话框1.关闭()

置被关闭回调(回调函数)

  • 功能: 设置对话框关闭时的回调函数,无论通过点击关闭按钮、点击遮罩(若启用)还是调用 关闭(),都会触发。
  • 参数: 回调函数,格式为 (源对象) => { ... }源对象 为对话框组件本身。
  • 返回值: 无。
  • 示例: 对话框1.置被关闭回调((源) => { 调试输出("关闭") })

⚠️ 注意事项

  1. 内容设置方式互斥置视图置HTML加载URL 会相互覆盖,最后调用的生效。建议只使用其中一种。
  2. 显示时机:建议先设置好内容和属性,最后调用 显示()。对话框在未调用 显示() 前不会出现在页面上。
  3. 多次使用:对话框可重复使用(调用 显示()关闭() 多次),内容会保留上次设置的数据(除非手动清空)。
  4. 遮罩层行为点击遮罩层关闭 默认为 ,建议在轻提示场景设为 ,在表单编辑场景设为 以防止误关。
  5. 滚动条:当内容超出 最大高度 时,内容区域会出现滚动条,不会影响对话框整体尺寸。
  6. 关闭回调置被关闭回调 在对话框完全关闭后触发,可用于刷新主页面数据或执行清理操作。
  7. 嵌套对话框:不建议在对话框中再打开新的对话框,可能导致遮罩层层级混乱。
  8. 跨域加载加载URL 加载外部页面可能受跨域策略限制,部分操作可能无法执行。
  9. 资源释放:对话框关闭后会自动从 DOM 移除,无需手动销毁。但若内容中包含定时器或事件监听,建议在关闭回调中主动清理。
  10. 弹出提示 的区别弹出提示 是轻量级 toast 通知,而对话框是更重型的模态窗口,适合承载复杂交互内容。

相关文档

  • 文档其它通用类组件_抽屉 —— 侧边滑出面板
  • 文档其它通用类组件_通知提醒框 —— 轻量级通知
  • 文档文本类组件_按钮 —— 对话框内常用交互组件
  • 文档文本类组件_单行输入框 —— 对话框内表单输入
  • 文档轻语言网站:轻语言语法速查 —— 拉姆达表达式、条件判断等
  • 文档综合演示:表单编辑对话框 —— 实际应用示例