2017-08-03 90 views
0

我已閱讀大量關於銷燬片段或頁面的帖子以避免重複的ID,但這裏的問題是片段顯示在視圖頁面中,並且當我再次按下相同的按鈕時我得到錯誤重複ID。SAP UI5中片段的重複ID錯誤

下面是片段和控制器代碼:

<core:FragmentDefinition xmlns="sap.m" 
    xmlns:f="sap.ui.layout.form" xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" 
    xmlns:html="http://www.w3.org/1999/xhtml" xmlns:l="sap.ui.layout"> 
<Page id="masterAp" showHeader="false" enableScrolling="true" >  
    <TileContainer 
     id="getTiles" 
     tiles="{myModel1>/0/TileCollection}"> 
     <StandardTile  
     title="{myModel1>title}" 
    icon="{myModel1>icon}" 
     number="{myModel1>number}" 
     numberUnit="{myModel1>numberUnit}" 
     info="{myModel1>info}" 
     infoState="{myModel1>infoState}" 
       press="handleTilePress"/>  
     </TileContainer> 
     </Page> 
</core:FragmentDefinition> 

的控制器代碼:請指點什麼行代碼丟失,避免重複ID錯誤:未捕獲的錯誤:錯誤:在添加元素與副本ID「 getTiles'

onPressGoToMaster1 : function() { 
    var oDialogFragment = sap.ui.xmlfragment("yca_web111_dashboard.fragments.panel2",this.getView().getController()); 
    var oModel = new sap.ui.model.json.JSONModel("data/dataAP.json"); 
    sap.ui.getCore().setModel(oModel, "myModel1"); 
    var oPage = this.getView().byId("detail"); 
    oPage.insertContent(oDialogFragment); 
    this.getSplitAppObj().to(this.createId("detail")); 

}; 

回答

3

您試圖在每次移動到頁面時使用id:detail來添加片段。最簡單的解決方案是檢查你是否已經添加了片段。

  • 如果是(片段存在),請不要再次將片段添加到帶有id:detail的頁面,然後導航。
  • 如果否(片段不存在),獲取片段,添加到頁面並導航。

代碼:

onPressGoToMaster1 : function() { 
    if (!this.oDialogFragment) { 
     this.oDialogFragment = sap.ui.xmlfragment("yca_web111_dashboard.fragments.panel2",this.getView().getController()); 
     var oModel = new sap.ui.model.json.JSONModel("data/dataAP.json"); 
     sap.ui.getCore().setModel(oModel, "myModel1"); 
     var oPage = this.getView().byId("detail"); 
     oPage.insertContent(this.oDialogFragment); 
    } 

    this.getSplitAppObj().to(this.createId("detail")); 

}; 
+0

謝謝....它的工作原理 – Chethan