画面组件 window-instance
2026年7月20日大约 3 分钟
画面组件 window-instance
在页面内嵌入另一个画面(画面复用)。
- 类型串:
window-instance默认尺寸:[400, 300]分类:容器
实时预览
下面渲染的是真实组件(与编辑器 / 运行时同源)。修改右侧「样式参数」,左侧预览实时更新;点击底部「全页面查看」可放大。
属性
下表为本组件特有的属性;
position/size/opacity/background/border/ 联动选中 / 筛选等通用参数见组件手册总览。
| 属性 | 名称 | 类型 | 默认 | 说明 |
|---|---|---|---|---|
window | 选择画面 | window | [] | |
content-fit | 内容缩放 | select | stretch | 可选:stretch / contain / cover / none |
show-window-bg | 显示画面背景 | boolean | false |
数据绑定
无组件特有数据绑定字段(纯样式 / 布局 / 装饰)。
事件
触发器
触发器在预览 / 播放态生效(编辑态点击 = 选中组件)。写在本组件
options.interactions的groups[].trigger里。
| 触发器 | 名称 | 触发时机 | payload(供动作公式 {:字段} 取值) |
|---|---|---|---|
click | 点击 | 点击本组件时触发 | 无 |
mouseEnter | 鼠标移入 | 指针移入组件时触发 | 无 |
mouseLeave | 鼠标移出 | 指针移出组件时触发 | 无 |
appear | 入场 | 组件出现时触发(配合进场动画) | 无 |
disappear | 离场 | 组件消失时触发(配合退场动画) | 无 |
receiveBehaviorEvent | 接收行为事件 | 收到 sendBehaviorEvent 动作或宿主 ctx.emit 投递的事件时触发(按 eventName 匹配) | 发送方携带的 data |
动作
触发器命中后执行的动作。本组件既可发起动作(配在自己的交互里),也可作为其它组件动作的目标。
| 动作 | 名称 | 说明 |
|---|---|---|
changeOption | 修改设置 | 把本组件(或其它组件)的某个属性改为静态值 / 公式动态值 |
switchState | 切换状态 | 切到多状态里的某个状态(state:"" 回默认态) |
appear / disappear | 进 / 退场动画 | 对目标 opacity 做 0↔100 插值的显隐动画 |
完整动作清单(switchScreen / switchWindow / openUrl / sendBehaviorEvent / transfer / executeScript / requestApi 等)与持久化写法见事件交互。
示例
{
"type": "window-instance",
"uid": "w_window_instance",
"options": {
"position": [40, 40],
"size": [400, 300]
}
}画面复用示例:一处定义、两页引用
公共头部画面 win_header 定义一次,两个页面各放一个画面组件引用它(画面内容改动即时同步到两处;window 引用写成 element 引用数组,targetPath 首元素 = 画面 uid):
{
"project": {
"screens": [
{ "uid": "screen_a", "type": "screen", "name": "总览页", "widgets": [
{ "type": "window-instance", "uid": "inst_header_a", "options": {
"position": [0, 0], "size": [1920, 100],
"window": [{ "refType": "element", "targetPath": ["win_header"] }],
"content-fit": "contain", // 画面按其设计尺寸等比缩放进组件框
"show-window-bg": true } } // 用画面的背景颜色(window-bg)作组件底色
] },
{ "uid": "screen_b", "type": "screen", "name": "告警页", "widgets": [
{ "type": "window-instance", "uid": "inst_header_b", "options": {
"position": [0, 0], "size": [1920, 100],
"window": [{ "refType": "element", "targetPath": ["win_header"] }],
"content-fit": "contain", "show-window-bg": true } }
] }
],
"windows": [
{ "uid": "win_header", "type": "window", "name": "公共头部画面",
"options": { "size": [1920, 100], "window-bg": "#0d1b33" },
"widgets": [ /* 头部内容:标题 / 时钟 / 导航……坐标相对画面左上角 (0,0) */ ] }
]
}
}同一个画面还能同时被
switchWindow以弹窗打开(运行态实例与嵌入实例 uid 隔离、互不冲突)。页面 / 画面 / 窗口 / 画面组件的区别与选型见窗口系统。画面嵌自身或形成环会被阻止(组件上提示循环引用)。