2017-02-09 83 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); 
}},