Sapui5 是否可以将两个模型绑定到一个控件?

Sapui5 是否可以将两个模型绑定到一个控件?,sapui5,Sapui5,我需要在我的标准图中显示两个数字。数据源是一个soapweb服务,我必须使用不同的参数调用它两次才能获得这两个数字。有没有办法用这两个数字填充瓷砖?我试着为每个对web服务的ajax调用创建一个XMLModel,然后从响应中将控件的属性绑定到节点,但我只是得到了相同的结果 下面是我在控制器中的onInit方法 onInit: function () { // callback from ajax request SOAPRequester.getMessageOv

我需要在我的标准图中显示两个数字。数据源是一个soapweb服务,我必须使用不同的参数调用它两次才能获得这两个数字。有没有办法用这两个数字填充瓷砖?我试着为每个对web服务的ajax调用创建一个XMLModel,然后从响应中将控件的属性绑定到节点,但我只是得到了相同的结果

下面是我在控制器中的onInit方法

onInit: function () {
        // callback from ajax request
        SOAPRequester.getMessageOverview(function (data) {
            var oModel = new sap.ui.model.xml.XMLModel();
            oModel.setData(data);
            var oStandardTile = sap.ui.getCore().byId("__xmlview0--messageOverviewTile");
            if (oStandardTile !== undefined) {
                oStandardTile.setModel(oModel, "overview");
                oStandardTile.bindProperty("number", {
                    path: "/SOAP-ENV:Body/rpl:getMessageListResponse/Response/rn5:number",
                    model: "overview"
                });
            }
        });
        //callback from the second ajax call
        SOAPRequester.getErrorMessages(function (callbackData) {
            var oModel = new sap.ui.model.xml.XMLModel();
            oModel.setData(callbackData);
            var oStandardTile = sap.ui.getCore().byId("__xmlview0--messageOverviewTile");
            if (oStandardTile !== undefined) {
                oStandardTile.setModel(oModel, "overview");
                oStandardTile.bindProperty("infoState", "Error");
                oStandardTile.bindProperty("info", {
                    path: "/SOAP-ENV:Body/rpl:getMessageListResponse/Response/rn5:number",
                    model: "overview"
                });
            }
        });


    },

是的。您使用同一型号名称两次,因此第一个型号名称不再可见。只需使用不同的型号名称,即“概述”和“概述2”或您喜欢的名称:

onInit: function () {
    // callback from ajax request
    SOAPRequester.getMessageOverview(function (data) {
        var oModel = new sap.ui.model.xml.XMLModel();
        oModel.setData(data);
        var oStandardTile = sap.ui.getCore().byId("__xmlview0--messageOverviewTile");
        if (oStandardTile !== undefined) {
            oStandardTile.setModel(oModel, "overview");
            oStandardTile.bindProperty("number", {
                path: "/SOAP-ENV:Body/rpl:getMessageListResponse/Response/rn5:number",
                model: "overview"
            });
        }
    });
    //callback from the second ajax call
    SOAPRequester.getErrorMessages(function (callbackData) {
        var oModel = new sap.ui.model.xml.XMLModel();
        oModel.setData(callbackData);
        var oStandardTile = sap.ui.getCore().byId("__xmlview0--messageOverviewTile");
        if (oStandardTile !== undefined) {
            oStandardTile.setModel(oModel, "overview2");
            oStandardTile.bindProperty("infoState", "Error");
            oStandardTile.bindProperty("info", {
                path: "/SOAP-ENV:Body/rpl:getMessageListResponse/Response/rn5:number",
                model: "overview2"
            });
        }
    });

},
提示:您还可以稍微改进代码,即

  • 调用
    this.getView().byId(“messageOverviewTile”)
    或者如果您有正确的UI5版本
    this.byId(“messageOverviewTile”)
    而不是
    sap.ui.getCore().byId(“\uu xmlview0--messageOverviewTile”)

  • 在视图中为控件进行绑定,然后在
    onInit()
    中调用
    this.getView().setModel(oModel,“概述”)
    this.getView().setModel(oModel,“概述2”)


  • 是的,是的。您使用同一型号名称两次,因此第一个型号名称不再可见。只需使用不同的型号名称,即“概述”和“概述2”或您喜欢的名称:

    onInit: function () {
        // callback from ajax request
        SOAPRequester.getMessageOverview(function (data) {
            var oModel = new sap.ui.model.xml.XMLModel();
            oModel.setData(data);
            var oStandardTile = sap.ui.getCore().byId("__xmlview0--messageOverviewTile");
            if (oStandardTile !== undefined) {
                oStandardTile.setModel(oModel, "overview");
                oStandardTile.bindProperty("number", {
                    path: "/SOAP-ENV:Body/rpl:getMessageListResponse/Response/rn5:number",
                    model: "overview"
                });
            }
        });
        //callback from the second ajax call
        SOAPRequester.getErrorMessages(function (callbackData) {
            var oModel = new sap.ui.model.xml.XMLModel();
            oModel.setData(callbackData);
            var oStandardTile = sap.ui.getCore().byId("__xmlview0--messageOverviewTile");
            if (oStandardTile !== undefined) {
                oStandardTile.setModel(oModel, "overview2");
                oStandardTile.bindProperty("infoState", "Error");
                oStandardTile.bindProperty("info", {
                    path: "/SOAP-ENV:Body/rpl:getMessageListResponse/Response/rn5:number",
                    model: "overview2"
                });
            }
        });
    
    },
    
    提示:您还可以稍微改进代码,即

    • 调用
      this.getView().byId(“messageOverviewTile”)
      或者如果您有正确的UI5版本
      this.byId(“messageOverviewTile”)
      而不是
      sap.ui.getCore().byId(“\uu xmlview0--messageOverviewTile”)

    • 在视图中为控件进行绑定,然后在
      onInit()
      中调用
      this.getView().setModel(oModel,“概述”)
      this.getView().setModel(oModel,“概述2”)