Javascript SAPUI5/OPENUI5:将字符串绑定到JSON模型,并自动更新较大的字符串(它读取[object%20Object])
我在SAPUI5中有一个模型,我称之为Foo,它有一个键:值对,{“BarKey”,“BarValue”}。该模型已在component1中成功设置,并已成功传播。当component1创建component2时,component2会成功显示“BarValue”,当“BarValue”更改时,页面标题也会正确更改: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
//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模型。给我一分钟,我把它加到答案上