SAP UI5:绑定DetailPage时出错

时间:2017-07-20 14:12:09

标签: javascript sapui5

我的masterPage中有以下代码:

 onInit: function () {
        var me = this;
        jQuery.ajax({
            type: "GET",
            contentType: "application/json; charset=utf-8",
            url: "RESTAPI",
            dataType: "json",
            success: function (response, status, xhr) {
                debugger;
                var oView = me.getView();
                var oModel = new sap.ui.model.json.JSONModel();
                oModel.setData(response);
                oView.setModel(oModel);
            }
        });
        me.mBindingOptions = {};
        me.oRouter = sap.ui.core.UIComponent.getRouterFor(this);  
        me.oRouter.getTarget("listainvestimento").attachDisplay(
              jQuery.proxy(me.handleRouteMatched, me));
    },

_onListItemPress: function (oEvent) {

        var context = oEvent.getParameter("listItem").getBindingContext().getPath().substr(1).split("/")[1]
        //context="0" (position in my array model)
        var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
        oRouter.navTo("detalheinvestimento", {
            ctx: context
        }, false);

    }

在我的DetailPage中:

onInit: function () {
        this.oRouter = sap.ui.core.UIComponent.getRouterFor(this);
        this.oRouter.getTarget("detalheinvestimento").attachDisplay(jQuery.proxy(this.handleRouteMatched, this));
},
 handleRouteMatched: function (oEvent) {
        this.getView().bindElement({
            path: "/" + oEvent.getParameter("arguments").ctx
        });
    }

Manifest.json

 {
      "pattern": "listainvestimento/detalheinvestimento/{ctx}",
      "name": "detalheinvestimento",
      "target": [ "listainvestimento", "detalheinvestimento" ]
    },

有关详细信息,我已在Build.me中创建了原型屏幕,并且我现在正在链接到我的实际服务器数据。

master中的绑定成功发生,但非详细。

我不知道错误在哪里,模型是在主设备中设置的,但是当它到达细节时它没有链接。

绑定的字段名称是正确的!

有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

  1. 您的json模型仅存在于母版页中,因为您是在控制器onInit方法上创建它的。它不会在详细信息页面/控制器中自动显示。您应该在manifest.json中定义模型,以便它可以在您的所有应用程序组件中使用,包括所有视图。请查看此链接,了解有关如何在清单中执行此操作的信息。
  2. https://blogs.sap.com/2016/10/11/sapui5-load-local-json-model-directly-manifest.json/

    1. json模型可以将其余API的URL作为参数,您不需要执行jquery.ajax调用并处理成功案例。