我正在使用Fiori
构建SAPUI5
类应用。我已成功构建了Master
页面,在项目点击后,我设置了上下文并导航到Detail
页面。
Master页面的上下文路径类似于" / SUPPLIER(" NAME")"。 App.controoler.js
中的函数如下:
handleListItemPress : function (evt) {
var context = evt.getSource().getBindingContext();
this.nav.to("Detail", context);
但我想知道如何在context
页面中访问此deatil
。我需要这个,因为我需要使用$expand
来构建网址并将项目绑定到表格。
任何建议都将受到高度赞赏。
由于
答案 0 :(得分:0)
UI5 Documentation中有一个示例,说明如何使用EventDelegate
自动为框架调用的onBeforeShow
函数来处理此问题。我根据你的使用情况进行了调整:
app.to("detailPage", context);
// trigger navigation and hand over a data object
// and where the detail page is implemented:
myDetailPage.addEventDelegate({
onBeforeShow: function(evt) {
var context = evt.data.context;
}
});
您可以决定使用addEventDelegate
或(我更喜欢)在目标视图中编写onBeforeShow
函数 。这可能是您的目标视图:
onBeforeShow(evt) {
// get your data from the evt object
var context = evt.data.context;
},
getControllerName : function() {
...
},
createContent : function() {
...
},
evt.data
对象包含您在app.to(id, data)
中输入的所有数据。您可以将其记录到控制台以查看evt对象的结构。
如果您对此有更多疑问,请与我们联系。
答案 1 :(得分:0)
请参阅购物车" SAP UI5演示工具包中的示例。
https://sapui5.hana.ondemand.com/sdk/test-resources/sap/m/demokit/cart/index.html?responderOn=true
通常,在' Component.js'中,应为不同的视图配置路由。
在视图中,必须听取路线。请参阅下文。
在Component.js中:
routes: [
{ pattern: "cart",
name: "cart",
view: "Cart",
targetAggregation: "masterPages"
}
]
在Cart.controller.js中,必须侦听路由。在此示例中,购物车是一个细节
onInit : function () {
this._router = sap.ui.core.UIComponent.getRouterFor(this);
this._router.attachRoutePatternMatched(this._routePatternMatched, this);
},
_routePatternMatched : function(oEvent) {
if (oEvent.getParameter("name") === "cart") {
//set selection of list back
var oEntryList = this.getView().byId("entryList");
oEntryList.removeSelections();
}
}
希望这有帮助。