Javascript SAPUI5/OPENUI5:将字符串绑定到JSON模型,并自动更新较大的字符串(它读取[object%20Object])

Javascript SAPUI5/OPENUI5:将字符串绑定到JSON模型,并自动更新较大的字符串(它读取[object%20Object]),javascript,json,sapui5,Javascript,Json,Sapui5,我在SAPUI5中有一个模型,我称之为Foo,它有一个键:值对,{“BarKey”,“BarValue”}。该模型已在component1中成功设置,并已成功传播。当component1创建component2时,component2会成功显示“BarValue”,当“BarValue”更改时,页面标题也会正确更改: //Component 1 var oData = {"BarKey", "BarValue"}; var oModel = new sap.ui.model.json.JSONM

我在SAPUI5中有一个模型,我称之为Foo,它有一个键:值对,{“BarKey”,“BarValue”}。该模型已在component1中成功设置,并已成功传播。当component1创建component2时,component2会成功显示“BarValue”,当“BarValue”更改时,页面标题也会正确更改:

//Component 1
var oData = {"BarKey", "BarValue"};
var oModel = new sap.ui.model.json.JSONModel(oData);
this.component.setModel(oModel, "Foo");

  //Component 2
  return new sap.m.Page({
  title: {
    path: "Foo>/BarKey"
  },
  });
我的问题如下:我想使用“BarValue”作为URL的一部分来加载新模型和图像源:

//Component 2 (continued)
var oModel2 = new sap.ui.model.json.JSONModel("http://www.mywebsite.com/" + {
    path: "Foo>/BarKey"
  });
var oImage = new sap.ui.Image({src: "http://www.mywebsite.com/" + {
    path: "Foo>/BarKey"
  }});
这种类型的绑定不起作用。我希望模型和图像的源在oModel1更改时更改。我的浏览器控制台记录以下错误:

元素sap.ui.commons.Image#uu image0中不存在“[object]”

获取“404”(未找到)

如何将[object%20Object]读取为字符串,并在oModel中更改部分字符串时更新整个字符串?

请尝试使用

var oImage = new sap.ui.Image({
    src: "http://www.mywebsite.com/{Foo>/BarKey}"
});
并将
数据sap ui xx bindingSyntax=“complex”
添加到加载ui5的
标记中


如果不起作用,您必须尝试格式化程序

var oImage = new sap.ui.Image({
    src: {
        parts: [{
            path: 'Foo>/BarKey'
        }],
        formatter: function(parameter) {
            return "http://www.mywebsite.com/" + parameter;
        }
    }
});

要在模型路径发生更改时立即更新模型,可以使用sap.ui.model.Binding

var fooModel = this.getModel("Foo");
var url = "http://www.mywebsite.com/" + fooModel.getParameter("/BarKey"));
var oModel2 = new sap.ui.model.json.JSONModel(url);
var binding = new sap.ui.model.Binding(fooModel, "/BarKey", fooModel.getContext("/"));
binding.attachChange(function(){
    oModel2.loadData("http://www.mywebsite.com/" + fooModel.getProperty("/BarKey")));
});

对于sap.ui.commons.Image,具有复杂绑定的第一个选项起作用!jsonModel给出了与以前类似的错误:加载资源失败:“第二个选项对模型也不起作用,但它不会返回错误。然后使用我添加到第二个选项的部件数组进行尝试,可能是格式化程序需要它,但它仍然不起作用。”。新的sap.ui.model.json.JSONModel在初始化时只接受字符串,而映像可以绑定到“src”,这可能是部分原因吧?当我执行oImage.setSrc(“{Foo>/BarKey}”)时,它也不起作用。很抱歉,没有看到您的第一条评论,当您希望在更新Foo模型后立即加载新模型时,可以将侦听器绑定到Foo模型。给我一分钟,我把它加到答案上