【发布时间】:2015-03-02 18:38:03
【问题描述】:
我是 SAPUI5 开发的新手,我想知道如何浏览不同的应用定义。
就我而言,我正在开发一个使用 sap.m.App 的移动应用,在某些视图中我想使用 sap.m.splitApp。
首先,我有一个登录页面和一个带有一些选项的磁贴容器。根据用户的选择,我将展示一个带有主页面和详细页面的 splitApp。
主应用控制器:使用此方法,我可以导航到我的 splitApp 视图
toApp: function (pageId, context) {
var app = this.getView().app;
// load page on demand
var master = ("Login" === pageId);
if (app.getPage(pageId, master) === null) {
var page = sap.ui.view({
id : pageId,
viewName : "view." + pageId,
type : "JS",
viewData : { component : this }
});
page.getController().nav = this;
app.addPage(page, true);
console.log("app controller > loaded page: " + pageId);
}
// show the page
app.to(pageId);
// set data context on the page
if (context) {
var page = app.getPage(pageId);
page.setBindingContext(context);
}
},
Ticket.view.js:在这里我将我的主页面和详细信息页面添加到我的应用程序中
createContent : function(oController) {
// to avoid scroll bars on desktop the root view must be set to block display
this.setDisplayBlock(true);
// create app
this.app = new sap.m.SplitApp();
// load the master page
var master = sap.ui.xmlview("MyTicketsList", "view.MyTicketsList");
master.getController().nav = this.getController();
this.app.addPage(master, true);
// load the empty page
var empty = sap.ui.xmlview("Empty", "view.Empty");
this.app.addPage(empty, false);
return this.app;
}
而且它运行良好。我可以导航到我的 splitApp。问题是如果用户选择其他选项,我必须返回我的主页(使用磁贴容器)。我希望在我的 Ticket.controller.js 中使用以下方法来做到这一点
back : function (pageId) {
this.getView().app.backToPage(pageId);
}
而且,在 MyTicketsList 控制器上,我使用了 handleNavButtonPress:
this.nav.back("MainPage");
但是这样不行!
如何浏览应用程序?或者,也许,用 Master 和 Detail 页面创建拆分器页面视图的更好方法是什么?
P.S.:我正在关注这个tutorial
提前致谢!
【问题讨论】:
-
不确定
backToPage方法,我相信这只有在保留历史记录时才有效——因为你没有使用路由器机制(我高度 推荐使用!),我认为您没有存储页面历史记录。查看sapui5.hana.ondemand.com/sdk/explored.html#/entity/… 以获取NavContainer的实现示例 -
好的!我知道了!但是拆分器视图呢?如何添加 Master 和 Detail 页面?主要是它们之间的导航。
-
我不会使用 Splitter 控件,它只是一个布局控件,用于将内容分成视图内可调整大小的列。请改用 SplitApp,请参阅关于如何实现 sapui5.hana.ondemand.com/sdk/#docs/guide/… 的极好的应用程序最佳实践
标签: android navigation sapui5