【问题标题】:SAPUI5 navigation between apps definitions应用程序定义之间的 SAPUI5 导航
【发布时间】: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


【解决方案1】:

首先在 splitApp 中你应该将视图实例化为

oSplitApp.addDetailPage(你的视图);

然后从 splitapp 使用导航, oSplitApp.toDetailPage(你的视图);

【讨论】:

  • 嗨 Sathish,感谢您的回复。 splitApp 中页面之间的导航是可以的。我正在寻找应用程序之间的导航,例如 sap.m.app 和 sap.m.splitApp
【解决方案2】:

这比看起来容易。

我遇到了同样的问题,要进行 SplitApp 预览,您只需像普通 XML 视图一样调用视图,但插入标签

【讨论】:

    【解决方案3】:
       onInit: function() {
         this.bus = sap.ui.component(sap.ui.core.Component.getOwnerIdFor(this.getView())).getEventBus();
    },
    
    doNavBack: function(event) {
        this.bus.publish("nav", "to", {id : "Page1"});
    },
    

    【讨论】:

    • 您能否提供更多关于这如何解决 OP 问题的详细信息?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 2023-03-17
    相关资源
    最近更新 更多