页面发布:动态页面
在 SemDB 的页面发布模块中,通过创建动态页面,可以制作包含自定义页面布局和简单的交互功能的页面。 本教程展示如何制作一个可以读取并更新后台表格数据的简单页面。
在这一教程中,我们接续 《数据操作基础教程(一)》 ,从一个已经完成数据导入的快照开始操作,如下所示。
点击左侧导航栏第七个按钮,进入发布页面,然后点击左侧列表下方的加号按钮,创建一个页面,输入页面名称然后选择页面类型为动态后提交。
在左侧列表选择刚创建的页面,在上方可以给页面添加一个标题。
在下方的配置代码框内,输入下面的 JSON 设置。
{
"type": "column",
"align": "center",
"child": [
{ "type": "text-field", "bind": "id", "label": "id", "valueType": "integer" },
{ "type": "text-field", "bind": "A", "label": "A", "valueType": "integer" },
{ "type": "text-field", "bind": "B", "label": "B", "valueType": "integer" },
{ "type": "text-field", "bind": "C", "label": "C", "valueType": "integer" },
{
"type": "row",
"justify": "end",
"child": [
{
"type": "column",
"cols": "auto",
"child": [{ "type": "button", "bind": "get", "label": "获取数据" }]
},
{
"type": "column",
"cols": "auto",
"child": [{ "type": "button", "bind": "post", "label": "提交数据" }]
}
]
}
]
}
关于页面配置的详细信息可以在 SemDB 的帮助附录内查看。 保存后,切换到函数栏,添加函数 get。
其内容为:
$util.capsule('Dir.CapsuleA', {
data: { MiniTableA: [{ id: $state.id }] },
handle: (data) => {
$state.A = data.MiniTableB[0].a
$state.B = data.MiniTableB[0].b
$state.C = data.MiniTableB[0].c
}
})
上面的代码本质上是在调用一个数据查询的胶囊,并使用其返回值修改页面信息。 这里我们略过了创建名为 Dir.CapsuleA 的胶囊的步骤,具体可参见 《胶囊:查询表格数据》 教程。
可以注意到 get 函数在上方的页面设置中被绑定在获取数据的按钮上,因此我们点击该按钮即可调用这一函数。
按照类似步骤我们可以再添加一个 post 函数,其内容为:
$util.capsule('Dir.CapsuleB', {
data: { MiniTableA: [{ id: $state.id, A: $state.A, B: $state.B, C: $state.C }] },
handle: () => {
$util.setSuccess('保存数据成功')
}
})
这里我们略过了创建名为 Dir.CapsuleB 的胶囊的步骤,具体可参见 《胶囊:修改表格数据》 教程。 保存后,我们前往所创建的页面,如下所示。
在输入 id 后,点击获取数据按钮,即可看到数据被读取到页面中。
此外点击提交数据按钮可以将数据录入到后台表格内,这里不再展示。