页面发布:动态页面
在 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 后,点击获取数据按钮,即可看到数据被读取到页面中。
此外点击提交数据按钮可以将数据录入到后台表格内,这里不再展示。