我似乎在努力解决这个问题 . 我正在使用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
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或任何其他项目保存到页面属性 . 例如:
然后,您可以通过将其添加到ProjectInfoPage中的onAttach事件来获取“ProjectKey”属性:
在onAttach事件中,您可以过滤新模型或将属性值传递给服务器脚本 . 我相信还有其他方法,但我希望这有帮助!