Fiori app - 详细信息页面SAPUI5上的getContext

时间:2014-03-22 13:01:49

标签: javascript odata sap sapui5

我正在使用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来构建网址并将项目绑定到表格。

任何建议都将受到高度赞赏。

由于

2 个答案:

答案 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();
    }
}

希望这有帮助。