
组件类名:
Wb.Viewport所属分组:General 继承链:Component → Container → Panel → Viewport
viewport 是全屏 Panel 组件,是一个模块(xwl 文件)的界面根容器。每个需要显示界面的模块通常包含且仅需一个 viewport,直接添加到 module 根节点下,代表模块内的全屏容器。它继承 Panel 的全部能力(标题栏、tbar/bbar 工具栏等),但典型用途是作为整个页面的布局骨架,通过 layout 属性组织子组件。
属性 | 说明 |
|---|---|
layout | 子组件布局方式:fit(填满)、row(水平排列)、column(垂直排列)、form/form1/grid/grid1/grid2(表单式,推荐 grid1) |
tbar / bbar | 顶部/底部工具栏。在 IDE 对象检查器中选择该属性后点击 [Add Wb.Toolbar] 创建内置工具栏 |
title | 标题文本 |
scrollable | 是否允许内容滚动 |
cls | 附加样式类 |
布局的实现机制:layout 属性最终在容器 bodyEl 元素上设置 cls 样式类,完全由 CSS 完成,性能开销极低。
layout=fit,子组件(如 grid)自动填满整个视口;layout=row,左侧 tree 设 width=20em,右侧 grid 设 flex=1;layout=column,上部 grid 设 flex=1,底部 panel 设 height=20em;layout=form1,直接放置多个编辑控件,自动形成规范的单列表单;JAVASCRIPT复制
// 向 viewport 动态添加子组件(注意:必须扁平配置,不能嵌套 properties)
app.viewport1.add({cname: 'grid', url: 'myapp/select-staff.xwl'});
// 获取子组件、切换可见性
const grid = app.viewport1.findItem(true, 'grid1');
grid.visible = false;
// 工具栏按钮的 click 事件中刷新数据
app.grid1.reload();组件就绪后执行的初始化代码放在 ready 事件中;事件处理函数中通过 app.<组件 cid> 访问模块内任意组件。
finalize 阶段容器可能仍是 0×0,需要延迟或轮询等待;add() 时使用扁平配置对象({cname, text, value...}),XWL 源码中的 properties:/events: 嵌套块是解析期专用语法,运行时传入会被丢弃;tbar/bbar,使用自定义键名整个工具栏不会被创建。平台示例:example/basic/layout.xwl(布局)、example/crud/staff.xwl(viewport + grid 标准 CRUD 页面结构)。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。