设置AstroZero标准页面表格组件属性
表格是一个组合组件,与模型绑定之后,可以提供快速构建基本表单能力,包括查询、保存、重置能力。同时,支持用户根据实际业务需求,进行二次修改编排。
数据绑定
- 值绑定:值绑定类似vue中的v-model语法,组件上创建双向数据绑定。值绑定会根据组件类型,自动选取正确的方法来更新元素。同时,负责监视各类引起绑定数据变化的事件以更新数据。
- 在“数据绑定”中,单击“值(value)绑定”中的,进入选择模型页面。
- 单击“新增模型”,进入新增模型页面。
- 设置模型名称与来源,单击“下一步”。
图2 定义模型
AstroZero支持自定义、对象、服务和事件四类模型,每类模型都包含参数定义和方法定义。方法是在模型上定义的API,通常会在前台组件关联的事件脚本(例如页面加载事件、鼠标单击事件)中调用这些API,以实现某些功能。
表1 模型来源说明 分类
模型说明
模型参数的定义
模型方法的定义
API调用方法
自定义
开发者自行定义的模型。
由开发者自定义,可以添加子节点。
开发者自定义方法。
$model.ref("modelName").actionName();
对象
由Object对象表映射生成,关于对象模型的详细介绍,请参见对象。
系统自动获取Object所有的字段,开发者可以从中选择部分字段作为参数。
系统自动生成查询、保存、删除和统计四个方法。
$model.ref("modelName").query(param);
$model.ref("modelName").save();
$model.ref("modelName").delete();
$model.ref("modelName").count();
服务
参数根据后台服务的入参、出参,映射生成为inputParam和outputParam节点。
系统自动生成run方法 ,用于执行模型关联的服务编排或脚本。
$model.ref("modelName").run();
事件
事件模型由后台事件的字段映射生成,并且支持websocket刷新模型数据。
参数根据后台事件的字段映射生成。
直接使用
直接使用
除了在模型中定义的方法,低代码平台还提供了如下标准API,适用于所有的模型。
- 获取模型数据:$model.ref("modelName").getData();
- 设置模型数据:$model.ref("modelName").setData();
- 设置模型字段值:$model.ref("modelName").setValue(key,value);
- 在新建模型“设置”页面,执行如下操作。
- 上一步来源选择“自定义”,需要添加子节点自定义参数及类型。
- 上一步来源选择“对象”,需要配置模型关联的对象以及字段。
- 上一步来源选择“服务”,需要配置模型关联的后台服务,可以是脚本、服务编排或者公共接口。
- 上一步来源选择“事件”,需要配置模型关联的事件以及事件字段。
- 单击“下一步”,设置方法。
- 设置完成后,单击“确定”。
- 属性值绑定:将容器组件的某个属性,如隐藏、样式、弹性布局等与具体的模型字段相绑定,绑定后组件的属性随模型字段的值变化而变化,类似Vue的v-bind。
- 在“数据绑定”中,单击“属性值绑定”后的“+”。
- 在“属性”下拉框中,选择容器的某个属性。
- 在模型字段中,单击,进入选择模型页面。
- 单击“新增模型”,进入新增模型页面。
- 设置模型名称与来源,单击“下一步”。
AstroZero支持自定义、对象、服务和事件四类模型,每类模型都包含参数定义和方法定义。方法是在模型上定义的API,通常会在前台组件关联的事件脚本(例如页面加载事件、鼠标单击事件)中调用这些API,以实现某些功能。详细介绍,请参见表1。图3 定义模型
表格列
- 合并:在已添加列中,选择了某几列,再单击“合并”,即可合并为一个大列,选中的列将作为大列的子列显示。
- 分解:在已添加列中,选中某个包含多个子列的大列,再单击“分解”,即可分解此大列。
- 添加字段:表格的列,当表格组件绑定了数据模型后,可选择绑定的模型中的字段成为表格的列,以及表格的查询条件。
- 添加操作列:表格的列,在表格中添加可操作列,即在操作列中通过添加图标,并为图标添加onclick事件代码,实现某些功能,如删除、编辑等。
- 添加空白列:表格的列,可添加表格空白列。
表格区块
- 工具栏用于扩展表格能力,为表格添加工具栏,提供增删改查以及保存的功能按钮。
图4 添加工具栏
- 表格组件绑定数据后,可基于表格中的字段,添加数据表格查询栏。
图5 添加查询条件
图6 设置后效果
扩展属性
- 自动加载数据:仅当模型为对象模型时有效,启用后,预览或加载页面时,将自动加载数据,不需要通过事件触发。
- 可编辑:启用后,表格中每行的内容是否能进行编辑操作,不启用则内容为只读。
- 单选:启用后,显示单选按钮。
- 多选:启用后,显示多选按钮。
- 行号:启用后,表格首列显示当前行号。分页时行号重新从1依次开始,不累加。
- 累加行号:和“行号”只能启用其中一个,启用后,表格首列显示当前行号,分页时行号累加上前一页依次显示。
- 最小列宽:设置最小列宽值。
- 加载中状态:是否显示表格加载中状态。
- 空数据提示:数据为空时,显示的提示内容。
- 筛选为空提示:筛选数据为空时,显示的提示内容,仅当列筛选时生效。
- 树形数据:当表格中的数据有父子关系,可开启树形数据,并指定关联字段后,可展示出树形结构。
- 默认展开:开启树形数据时,子数据是否默认展开。
- 可选择:开启树形数据时,是否启用父子关联选择。
- 图标显示字段:开启树形数据时,图标所在位置显示的字段。不配置,就是第一列的字段。
- 父节点字段:开启树形数据时,关联的父节点字段。
- 子节点字段:开启树形数据时,关联的子节点字段。
- 根节点字段值:开启树形数据时,根节点的字段值。不配置默认为空。
- 子节点缩进:子节点缩进,单位px。
- 行拖拽:开启树形数据时,是否启用行拖拽,拖拽行可改变数据的父子结构。
- 风格
- 尺寸:设置表格的尺寸。
- 显示表头:启用后,表格显示标题行。
- 斑马纹:启用后,表格会间隔显示不同颜色,用于区分不同行数据。
- 纵向边框 : 启用后,显示一个纵向的选择框。
- 高度跟随内容:表格行高度是否跟随内容多少变化。
- AUI风格:是否开启AUI风格。
- 表头样式类:表头固定的class类名。
- 数据行样式类:表数据行class类名的回调方法,支持自定义各行数据不同的class类名。
- 合并行或列:合并行或列的计算方法,支持自定义设置行或列,单元格合并规则。
图7 合并行或列
公共
- 控件名称:当前组件的名称。
- 隐藏:是否隐藏该组件,此方式为静态配置该组件的隐藏。还可以将该组件属性值“隐藏”配置为布尔类型模型字段,在自定义JS代码中来控制模型字段取值,从而设置该组件是否隐藏,这种动态设置优先级是最高的。
样式
针对有丰富前端开发经验的用户,可通过“样式”面板对页面进行更深度的个性化布局定制。
- 表格宽高:设置表格的宽度和高度。
- 布局:对页面CSS属性进行直接配置,如设置组件的宽度、高度等。您也可以在“高级设置”中,直接编写CSS代码进行更深度的个性化布局定制。
- 单击“显示”属性后的按钮,可以快速指定当前元素布局为“block”、“inline-block”、“inline”和“flex”。
- “显示”属性下方展示了当前元素的盒模型示意图,在对应的数字位置单击并改变值,即可快速改变元素上下左右位置上的内外边距属性。
- 当前元素盒模型示意图下方,展示了当前元素的宽和高,默认是根据当前布局自适应后的宽高,可以在这里手动输入值配置当前元素的宽和高。
- 盒模型和宽高配置时,支持“px”、“em”、“%”、“auto”等多种单位。
图8 样式属性配置面板
- 字体:设置字体大小、字体样式、颜色等。
- 背景:设置背景颜色、透明度。
- 阴影:设置阴影颜色、模糊、扩散等,支持“px”、“em”和“%”三种单位。
- 高级设置:在高级设置中,直接编写CSS代码作用于当前元素。
- 样式源码:组件具体样式代码,组件样式设置后,样式代码将自动显示在“样式源码”中。也可以自定义样式代码,对组件进行详细配置,自定义代码支持多行输入,并高亮显示样式参数。
- 样式类:当前组件使用的CSS样式类名,可在CSS代码中进行引用。
- 样式透传:启用后,可以将设置好的样式透传给组件的子节点。
绑定数据模型、增加查询条件、工具栏
设置组件绑定的数据模型,有自定义对象、对象、服务和事件四种,本章节以绑定模型为例进行介绍。
- 在表格的“属性 > 数据绑定”中,单击,进入选择模型页面。
- 在选择模型页面,单击“新增模型”。
- 设置表格的元数据模型,模型名称设置“equipmentInstance”,来源选择“对象”,单击“下一步”。
图9 创建对象数据模型
- 在选择对象页面,选择一个提前创建好的对象,例如“命名空间__Equipment__CST”,“选择字段”中选择表单中需要展示的字段,单击“下一步”,单击“确定”。
- 返回选择模型页面,勾选创建好的元数据模型,单击“确定”。
绑定对象模型后,显示如下图所示。如果需要在每行添加行序号,可在表格的“扩展属性”中打开“行号”。
图10 绑定数据模型后的结果列
- 选中上图中“已添加列”中的任意一项,单击,调整列的显示顺序。
- 单击上图中每个字段后的,修改列标题、是否隐藏、是否可编辑等字段属性。
以“设备编码”为例,其属性配置如下图所示。在配置列标题时,可选择已有多语言、创建或更新多语言,此处创建的多语言会保存在租户的多语言库中。
图11 设置“设备编码”列的属性
- 为表格增加操作列。
- 在左侧“设计视图”中选中“表格”,单击右侧“属性 > 表格列”中的。
图12 单击表格列后的+
- 单击新建表格列,即Operation1后的。
图13 新建列
- 在“属性配置”页面,修改“列标题”为“操作”。
- 在 中,单击“添加操作按钮”,设置“编辑”按钮的样式。
- 在上图中单击事件图标,单击“动作列表”后的“+”号,在弹出的事件编排器右侧代码编辑区,添加如下事件代码,单击“创建”。
//获取当前组件(即table) let _component = context.$component.current; //获取当前行row,取对象的id属性 let rowId = _component.$attrs.row.id; //带着id跳转到设备详情页面 context.$page.load('/besBaas/page#/命名空间__editEquipment?id='+rowId);
- 返回标准页面开发界面,单击页面上方的,保存页面。
- 按照上述操作,再次单击“添加操作按钮”,添加“删除”按钮。
参照图14,设置按钮的“类型”为“主要按钮” 、“图标”为“android-delete”。
- 单击事件图标,在弹出的事件编排器右侧代码编辑区,添加如下事件代码,单击“创建”。
//获取当前组件(即table) let _component = context.$component.current; //获取当前行 let row = _component.$attrs.row; // 表格组件 let _table = this.$component.table; // 删除当前行数据 this.$dialog.confirm({ title: '确认框', content: '确认是否删除?', okText: "确定", cancelText: "取消", onOk: () => { _table.doDelete([row]).then(()=>{_table.doQuery();}) } })
- 返回标准页面开发界面,单击页面上方的,保存页面。
- 在左侧“设计视图”中选中“表格”,单击右侧“属性 > 表格列”中的。
- 设置工具栏区域。
- 在左侧“设计视图”中,选中“表格”,单击右侧“属性 > 表格区块 > 工具栏”后的“添加”。
- 删除上图工具栏中多余的按钮,只保留“新增行”、“保存”和“删除”按钮。
- 单击页面上方的,保存页面。
树形数据功能介绍
当表格中的数据有父子关系,可在表格属性中开启“树形数据”开关,并指定关联字段后,可展示出树形结构。
例如,低代码平台中存在如图15所示的数据,数据之间存在父子关系,效果需要展示成“树形数据”,如图16所示,明确层级关系。
- 首先查看数据对应的对象,查看数据列的字段名。
如果需要构造如图15所示的数据,在新建对象,新增如下图所示自定义字段后,打开布局页签,选中“对象名Records”数据记录页,新增图15所示的数据。
图17 新增自定义字段
- 在标准页面中,选中表格组件,新增模型,设置为对象模型,选中1中的对象,设置表格数据源。
图18 设置数据绑定
图19 新增模型
图20 设置对象模型
图21 设置关联字段
图22 选中模型
- 在标准页面中选中表格组件,开启“树形数据”开关,参考数据绑定设置如下参数。
图23 开启树形数据
- 单击页面上方的,保存页面。
- 单击,预览该页面,可查看到如图24所示层级关系。
引申说明
表格组件能够以树形展示有个前提条件,即表格绑定的模型中存在取值上有父子关系的两个字段。
上述模型中,“主管”字段的值来源于“名称”,这两个字段就可以认为是父(主管)子(名称)关系,而“部门”字段仅在逻辑上和“名称”是父子关系,取值上并不是,这一点极易混淆。基于上述前提,就可以在表格的属性面板中绑定上述模型,开启“树形数据”开关,然后配置“主管”为父字段,“名称”为子字段。