编辑:似乎正确的值存储在chat-engine-server
中,而不仅仅是listWidget.children._values
。我觉得奇怪的是,这些孩子仍然会包含那些旧的行键和空值。
我正在尝试创建一个列表,其数据源是另一个数据源的项目的关系。例如:我有两个表,一个表存储角色,另一个表存储权限,并且角色和权限之间存在一对多关系。 listWidget.children
和roles
表都具有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"
谢谢。
答案 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/