我正在研究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时,它是未定义的。为什么呢?
答案 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();
},