2017-05-09 42 views
0

我正在開發SAP Fiori應用程序,並且我在這個問題上停留了大約2周,但沒有任何結果。我有一個附加到「Detail」視圖的「創建」片段。SAP Fiori:碎片中的後退按鈕

當我打開「創建」片段並想返回到主細節視圖時,後退按鈕不起作用,因此我必須刷新應用程序。

我猜後面的按鈕不能以相同的方式在片段之間的視圖&之間工作。

這是我的後退按鈕功能:

cancel: function() { 

     var oHistory = sap.ui.core.routing.History.getInstance(), 
      sPreviousHash = oHistory.getPreviousHash(); 

     if (sPreviousHash !== undefined) { 
      // The history contains a previous entry 
      history.go(-1); 
     } 

    }, 

這裏的時候,我顯示sPreviousHash,這是不確定的。爲什麼?

回答

0

您所指的後退按鈕在哪裏?

我期望片段是一個對話框,因此沒有後退按鈕。需要關閉按鈕,這將導致片段被關閉。根據需求,可以從創建片段的控制器完成後退導航。

碎片是重用UI部件的技術,但不是MVC概念的一部分。你不能直接導航到/從一個fragement,這必須完成使用視圖。因此歷史不可用於片段。 BROWSER後退按鈕將帶您前往BROWSER歷史中的上一個屏幕。

+0

謝謝你隊友你清楚的解釋,你能給我一個關閉片段的示例代碼嗎? –

0

將片段作爲對話框打開的視圖的控制器。

_initializeReviewDialog: function() { this._oReviewDialog = sap.ui.xmlfragment(this.getView().getId(), "ReviewDialog", this); 

    this.attachControl(this._oReviewDialog); 

    }, 

事件的看法,即觸發對話開幕

onEditReviewPressed: function(oEvent) { 


    if (!this._oReviewDialog) { 

     this._initializeReviewDialog();  } 


     } 

    this._oReviewDialog.open(); 

    }, 



    onReviewDialogOKPressed: function(oEvent) { 

     this._oReviewDialog.close(); 

    }, 

添加片段作爲相關的,所以,從擁有視圖/控制器模型和事件都知道

attachControl: function(oControl) { 

    var sCompactCozyClass = this.getOwnerComponent().getContentDensityClass(); 

    jQuery.sap.syncStyleClass(sCompactCozyClass, this.getView(), oControl); 

    this.getView().addDependent(oControl); 

    }, 

FragmentDefinition

<core:FragmentDefinition id="ReviewDialogFragment" xmlns="sap.m" xmlns:l="sap.ui.layout" 

     xmlns:core="sap.ui.core"> 

    <Dialog id="reviewDialog" > 

     <content> 

      ...   </content> 

     <beginButton> 

      <Button id="btnOK" text="{i18n>xbut.ok}" press="onReviewDialogOKPressed"/> 

     </beginButton> </Dialog> 


</core:FragmentDefinition>