0

我似乎在为此苦苦挣扎。我正在使用 Google App Maker 开发项目管理应用程序。我正在使用 SQL 数据模型。我遇到问题的应用程序部分是几个与项目列表页面链接的项目详细信息页面。从项目列表页面转到第一个项目详细信息页面没有任何问题。

我在项目列表页面中有一个表格小部件,表格行的onClick代码是:

    app.datasources.Projects.selectKey(widget.datasource.item._key);
    app.showPage(app.pages.ProjectPage);

这会过滤第一个详细信息页面,其中记录的主键处于焦点位置。这里没问题。当我想导航具有不同数据源的下一个详细信息页面时(但我仍然需要使用相同的主键进行过滤),我正在努力。

如果有人可以指导我在第一个详细信息页面中制作一个按钮,当单击该按钮时,该按钮会在该当前页面中加载项目的 _key 并过滤同一项目的另一个详细信息页面,(使用另一个数据模型,我们称之为 ProjectBudgetPage例如)我非常感谢您的帮助。

这是我最近一次尝试导航到项目中的其他详细信息页面,这是针对 onClick 事件:

     var widgets = widget.parent.descendants;
     var projectID = widgets.HiddenProjectID.text;
     var projectDataSource = app.datasources.ProjectBudgetView.item;
     projectDataSource = projectID;
     app.showPage(app.pages.ProjectInfoPage);

这导致:(TypeError) : Cannot read property '__gwt_instance' of undefined at HeaderProjectTabs.HeaderContainer.InfoTabButton.onClick:5:5

4

1 回答 1

1

我不确定我是否理解正确,但我建议您首先检查此处提供的官方 App Maker 模板https://developers.google.com/appmaker/templates/partner-management/它提供了一个准备运行的应用程序您可以使用它来管理合作伙伴的内部列表,但您也可以根据自己的需要对其进行自定义。我最近使用了这个模板的大部分 UI 和逻辑,并且能够将它与 SQL 数据模型集成,并且效果非常好。

我注意到对于这个模板,他们将 (widget.datasource.item._key) 保存到页面自定义属性中,您可以在之后访问该属性。自定义属性是存储单个用户会话数据的页面级属性。当您需要将多个小部件的属性绑定到单个值时,自定义属性很有用。此处提供更多信息https://developers.google.com/appmaker/ui/binding#custom_properties

在您的场景中,您可以在 ProjectInfoPage 中创建一个新的自定义属性(字符串),然后您可以将脚本添加到 ProjectPage 中的按钮 onClick 事件,以将 _key 或任何其他项目保存到页面属性。例如:

app.pages.ProjectInfoPage.properties.ProjectKey = widget.datasource.item._key;
app.showDialog(app.pages.ProjectInfoPage);

然后,您可以通过将其添加到 ProjectInfoPage 中的 onAttach 事件来获取“ProjectKey”属性:

var key = app.pages.ProjectInfoPage.properties.ProjectKey;
…

在 onAttach 事件中,您可以过滤新模型或将属性值传递给服务器脚本。我相信还有其他方法,但我希望这会有所帮助!

于 2017-03-13T00:35:23.133 回答