2017-08-03 8 views
0

重複したIDを避けるためにフラグメントまたはページを破棄することについていくつかの記事を読んだが、ここで問題はビューページにフラグメントが表示され、 Duplicate 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

関連する問題