SAP Fiori:片段中的后退按钮

时间:2017-05-09 10:11:27

标签: sap sapui5 sap-fiori

我正在研究SAP Fiori应用程序,我在这个问题上遇到了大约2个星期而没有结果。我有一个“创建”片段,它附加到“详细信息”视图。

当我打开“创建”片段并想要返回主要详细视图时,后退按钮不起作用,因此我必须刷新应用程序。

我认为后退按钮在视图和视图之间的工作方式不同片段之间。

这是我的后退按钮功能:

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时,它是未定义的。为什么呢?

2 个答案:

答案 0 :(得分:0)

您所指的后退按钮在哪里?

我希望片段是一个对话框,因此没有后退按钮。需要一个关闭按钮,这将导致片段被关闭。根据要求,可以从创建片段的控制器完成后退导航。

片段是一种重用UI部件的技术,但不是MVC概念的一部分。您不能直接导航到/从一个fragement导航,这必须使用视图完成。因此,片段中不提供历史记录。 BROWSER后退按钮将带您进入BROWSER历史记录中的上一个屏幕。

答案 1 :(得分:0)

视图的控制器,其中片段作为对话框被打开。

 public ActionResult fileupload(HttpPostedFileBase file)
        {
            if (file != null)
            {

                string ImageN = System.IO.Path.GetFileName(file.FileName);//get the file path
                string physicalPath = Server.MapPath("~/Invoice/" + ImageN);//store the file path in a folder called img

                file.SaveAs(physicalPath);

                Invoice newP = new Invoice();
                newP.InvoicePath = ImageN;
                newP.CreatedInvoice = DateTime.Now;
                db.Invoices.Add(newP);//store the image path in a database
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View();
        }

视图中的事件触发对话框打开

        ChannelFactory<ITestService> factory = null;
        ITestService serviceProxy = null;

        BinaryMessageEncodingBindingElement binaryMessageEncodingBindingElement = new BinaryMessageEncodingBindingElement();
        binaryMessageEncodingBindingElement.CompressionFormat = CompressionFormat.GZip;

        HttpTransportBindingElement httpTransportBindingElement = new HttpTransportBindingElement();
        httpTransportBindingElement.MaxReceivedMessageSize = int.MaxValue;

        CustomBinding customBinding = new CustomBinding(new BindingElement[] { binaryMessageEncodingBindingElement, httpTransportBindingElement });

        factory = new ChannelFactory<ITestService>(customBinding, new EndpointAddress("http://localhost/test.svc/mex"));
        serviceProxy = factory.CreateChannel();

        var result = serviceProxy.GetResultData(50);

将片段添加为Dependent,以便知道拥有视图/控制器的模型和事件

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

    this.attachControl(this._oReviewDialog);

    },

FragmentDefinition

onEditReviewPressed: function(oEvent) {


    if (!this._oReviewDialog) {

        this._initializeReviewDialog();     }


        }

    this._oReviewDialog.open();

    },



    onReviewDialogOKPressed: function(oEvent) {

        this._oReviewDialog.close();

    },