2017-05-09 85 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>