繁体   English   中英

SAPUI5在正确的时间分配模型

[英]SAPUI5 Assigning the model at the right time

我有一个函数,该函数应该从我的odata服务中读取一个实体并将其作为模型提供给预处理器。 当我尝试调试代码时,我看到oDataModel在预处理器之后加载。 因此,在预处理器中,我的变量“ oDataModel”未定义。

我找不到将我的JSONModel分配给变量的正确顺序

sap.ui.define([
"sap/ui/core/UIComponent",
"sap/ui/Device",
"Test_Start/model/models",
"sap/ui/model/odata/v2/ODataModel",
"sap/ui/core/util/XMLPreprocessor"
], function(UIComponent, Device, models, ODataModel, XMLPreprocessor) {
"use strict";
var oDataModel;
return UIComponent.extend("Test_Start.Component", {

    metadata: {
        manifest: "json"
    },


    createContent: function() {

        var oModel = new ODataModel("/XXX/"),
        oMetaModel = oModel.getMetaModel(),
        sPath = "/ColumnSet",
        oViewContainer = new sap.m.VBox();


        oMetaModel.loaded().then(function() {

            oModel.read("/DataSet(0)",{
            method: "GET",
            success:function(oData) {
                    oDataModel = new sap.ui.model.json.JSONModel(oData);
                    console.log(oDataModel);
                    },
            error: function(){

            }
            });
            var oTemplateView = sap.ui.view({
                preprocessors: {
                    xml: {
                        bindingContexts : {
                            meta : oMetaModel.getMetaContext(sPath)
                        },
                        models: {
                            meta: oDataModel
                        }
                    }
                },
                type : sap.ui.core.mvc.ViewType.XML,
                viewName: "Test_Start.view.View"
            });
            oTemplateView.setModel(oModel);
            oTemplateView.bindElement(sPath);
            oViewContainer.addItem(oTemplateView);

        });

        return oViewContainer;

    }



});


});

感谢DanielAlmeida评论,我找到了解决方案:

createContent: function() {
  var oModel = new ODataModel("/sap/opu/odata/SAP/ZPFO_CKPT_ODATA_DYN_SRV/"),
    oMetaModel = oModel.getMetaModel(),
    sPath = "/ColumnSet",
    oDataModel,
    oViewContainer = new sap.m.VBox();
    oMetaModel.loaded().then(function() {
      oModel.read("/DataSet(0)",{
        method: "GET",
        success: function(oData) {
          oDataModel = new sap.ui.model.json.JSONModel(oData);
          console.log(oData);
          console.log(oDataModel);
          var oTemplateView = sap.ui.view({
            preprocessors: {
              xml: {
                bindingContexts: {
                  meta: oMetaModel.getMetaContext(sPath)
                },
                models: {
                  meta: oDataModel
                }
              }
            },
            type : sap.ui.core.mvc.ViewType.XML,
            viewName: "Test_Start.view.View"
          });
          oTemplateView.setModel(oModel);
          oTemplateView.bindElement(sPath);
          oViewContainer.addItem(oTemplateView);
        },
        error: function() {}
      });
    });
    return oViewContainer;
  }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM