2017-02-09 118 views
3

我是SAPUI5的新手,我在导航,边栏和标题中遇到了一些问题。 我想开发一个头和一个侧边栏的应用程序。我为此使用了一个“ToolPage”。每页都包含工具页,如下所示:SAPUI5 - 标题,边栏和导航

<mvc:View > 
    <tnt:ToolPage id="toolPageId"> 
     <tnt:header> 
      <core:Fragment ...> </core:Fragment>  
     </tnt:header> 
     <tnt:sideContent id="SideContentId"> 
      <core:Fragment ...> </core:Fragment> 
     </tnt:sideContent> 
     <tnt:mainContents> 
      <NavContainer id="pageContainerId" width="100%"> 
       <Page ...> 
        <content> 
         ... 
         ... 
        </content> 
       </Page> 
      </NavContainer> 
     </tnt:mainContents> 
    </tnt:ToolPage> 
</mvc:View> 

它们都与此类似,只是在内容标记中有不同的代码。

有了这个,我实现了我想要的布局,并使用manifest.json中的路径进行导航。我有一个控制器的每一页,并与导航:

onNavToBeTask: function(oEvent) { 
     this.getRouter().navTo("pageTasklist"); 
} 

我现在有我每次浏览时间,页眉和侧边栏将被再次加载,并在侧边栏的错误字段将被高亮显示的问题。

我找到了一个例子,但这里是一个.xml的所有代码,其中包括一个.js文件这将是非常不清楚 https://sapui5.netweaver.ondemand.com/sdk/explored.html#/sample/sap.tnt.sample.ToolPage/code

我的问题是:

  • 是什么一般来说,使用侧边栏和标题进行导航的最佳方式是?
  • 最好是有一个“主页”标题和边栏,只需将内容添加到内容标签?
  • 或者我应该只在侧边栏中选择正确的字段,并在导航到页面时调用该函数?

编辑:

Sample screenshot, what I would like to achieve

回答

1

据我从您的文章的理解,你有一个主视图(母版页)持有的ToolPage和SideNavigation。

而您想将视图放在ToolPage的mainContents标记中。 如果是这样的话: 您不应该使用路由器。因为使用路由器,您将离开主视图。

我列出在这里,你应该做的:

  1. 创建你的意见,不同的视图文件。 (XML或JS)假设您创建View1。

  2. 为按钮点击(点按)菜单项创建事件处理程序。这应该转发给主视图的控制器。 (EventBus)

  3. 在主视图的控制器中,创建一个函数来实例化View1。实例化后,将View1添加到ToolPage的ScrollContainer(或NavContainer)的内容。

事情是这样的:

onGoToProductTable: function(oEvent) { 
var oScrollContainer = sap.ui.getCore().byId("idScrollContainer"); 
var oCurrentView = oScrollContainer.getContent(); 
if (!oCurrentView[0]) { 
     var view = sap.ui.getCore().byId("ProductTable"); 
     if (view === undefined) { 
      view = sap.ui.view({ 
       type: sap.ui.core.mvc.ViewType.JS, 
       viewName: "xxx.yyy.view.ProductTable" 
      }); 
     } 
     oScrollContainer.addContent(view); 
}},