子数据集
子数据集是指数据集里边的一个子类,比如商品数据集,可以给它添加一个商品库存这个子数据集,这样可以扩展商品数据集的数据内容。
设计好子数据集的层级和结构后,就可以用来装载多层结构的数据,比如多层的 JSON 数据。
一个数据集,可以设置多个子数据集。每个子数据集里边,还可以继续设置子数据集,实现像树一样的多层结构。
“设置子数据集”在数据集的右侧设置中,如下图所示:
子数据集数据来源有两种,一种是通过设置数据集的输出数据集,获取嵌套数据;另一种是使用其它方法获取 JSON 数据,手工加载。
特别说明:注意区别下面两种情况
- 使用两个数据组件,设置主从选项,形成主从关系,适用于界面上只展现一条主表的从数据的场景
- 使用一个数据组件,设置子数据集,形成主从关系,适用于界面上同时展现多条主表的从数据的场景
使用输出数据集获取嵌套数据
数据集支持设置输出数据集,通过输出数据集,可以获取嵌套数据
添加输出数据集
在数据组件的数据列中,选中输出数据集,以获取嵌套数据,如下图所示,注意,数据列一旦选择,就必须把所有需要的列都选中,特别是主键、外键、版本等列
设置子数据集
在数据组件上设置子数据集,如下图所示,数据列选择输出数据集的列,子数据集选择对应的数据模型(用于后续可视化设计)
用表格显示子数据集
表格,绑定数据组件,添加子表格,绑定数据组件的输出数据集列,如下图所示
数据组件刷新数据,得到嵌套数据,自动加载到数据组件和子数据集中,运行效果如下图所示
手动加载 JSON 数据
添加子数据集 JSON 数据列
设置子数据集之前,先评估主数据集是否需要新增计算列来存放子数据集的数据。既可以使用原来的列(如果原来有值会被覆盖),也可以使用计算列。
这里新增计算列来存放子数据集。
设置子数据集
点击“设置子数据集”,选择新增的计算列来关联子数据集:
加载 JSON 数据
设置后的数据结构,可以用来加载多层的 JSON 数据,比如从第三方 API 接口获取的复杂数据。这里以静态的 JSON 数据为例,点击按钮加载数据到主数据集中,同时也同步加载到了子数据集中。示例代码如下
onButton1Click = (event) => {
let exampleName = "鼠标";
// 比如来自第三方数据
let data = [
{
"fid": wx.UUID.createUUID(),
"name": exampleName,
// 这里是子数据集的数据
"stock": [
{
"fid": wx.UUID.createUUID(),
"name": exampleName,
"model": "有线鼠标",
"store": 50
},
{
"fid": wx.UUID.createUUID(),
"name": exampleName,
"model": "无线鼠标",
"store": 30
}
]
}
]
// 一次性加载数据
this.comp("restData0").loadData(data, true);
console.log(this.comp("restData0").toJson());
}
用表格显示子数据集
设置子数据集后,数据组件的数据结构类似于:商品.库存 => 商品库存。这个数据结构,符合 表格 => 子表格 的形式,因此可以绑定表格来展示
主表格绑定商品数据集
主表格添加子表格,子表格绑定子数据集对应的列
加载数据后,主数据集和子数据集都有数据,在表格中的效果如下图所示