具有关系的列表作为数据源

时间:2018-06-19 16:08:18

标签: google-app-maker

编辑:似乎正确的值存储在chat-engine-server中,而不仅仅是listWidget.children._values。我觉得奇怪的是,这些孩子仍然会包含那些旧的行键和空值。

我正在尝试创建一个列表,其数据源是另一个数据源的项目的关系。例如:我有两个表,一个表存储角色,另一个表存储权限,并且角色和权限之间存在一对多关系。 listWidget.childrenroles表都具有permissions属性。

我有一个带有数据源name的列表,用于选择一个角色。每行都有一个按钮,其中包含用于onClick事件的以下代码:

roles

我不确定这是否是最佳做法,但是它将当前角色项设置为存储在app.datasources.roles.selectKey(widget.datasource.item._key); app.showPage(app.pages.listView); 列表行的数据源密钥中的密钥。

listView页面具有另一个列表,这次具有roles的数据源,用于从当前角色的权限加载行。然后,我有一个简单的标签来输出该权限的名称。

权限列表第一次加载就很好,列表小部件的子级包含正确的行,但是当您返回角色选择页面并单击另一个角色的按钮时,小部件似乎使用子级键进入了无效状态保持为旧行,并且值为null。我在该行的onDataLoad上有一个事件来输出该行小部件,我可以看到正在加载新行并将其链接到父小部件(列表本身),但是如果我返回到该小部件的子级,则值仍然空。

例如,假设我有两个角色:

@datasources.roles.item.permissions

以及以下权限:

key | name 
===========
1   | role1 
2   | role2

当我单击按钮以加载角色密钥key | name | role_fk ===================== 1 | perm1 | 1 2 | perm2 | 1 3 | perm3 | 2 并显示其权限列表时,我会得到正确的列表:

1

当我检查列表小部件时,我还会看到正确的子级:Permission List: ================ perm1 perm2 。但是,一旦我返回并单击以加载角色密钥"List1Row$0", "List1Row$1",我仍然有孩子2,它们的值为空,并且列表显示:

"List1Row$0", "List1Row$1"

我知道Permission List: ================ perm3 小部件正在创建中,因为它在连接时可以打印到控制台。奇怪的是,它的名称为perm3,表明旧行值从未被清除。

有人知道如何解决此问题吗?我可以链接一个示例应用程序,该应用程序在暴露问题的同时,可以做得尽可能简单。我不确定您是否能够将项目关系用作列表数据源,或者我在选择数据源,项目和绑定的方式上是否存在问题。

这是一些其他输出,列表的分离点是我返回并单击以将页面项设置为第二项的地方。

"List1Row$2"

谢谢。

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用item._load方法重新加载相关项目?可能会强制重新加载当前项目的相关项目。

查看此处:

https://developers.google.com/appmaker/scripting/api/client#Record

_load(   callback:Function)

这在Project Tracker模板应用程序中也用于加载项目的历史记录(EditItem客户端脚本行100)。看到这里:https://developers.google.com/appmaker/templates/project-tracker/