我正在使用OData模型将UI控件绑定到GW服务。在服务元数据中,数据结构中有“FirstName”和“LastName”。在UI上,比方说,我正在使用Label控件。
现在的问题是如何使用OData Model直接将Label的Text属性绑定到“FullName”字符串(即“FirstName”+“LastName”)?如果我使用JSON模型,我可以创建一个局部变量FullName = FirstName + LastName
,并将Text属性绑定到FullName。但是我怎么能用OData Model做到这一点?
答案 0 :(得分:14)
此外,您可以在 sap-ui-core.js 中启用复杂数据绑定:
<script src="resources/sap-ui-core.js"
id="sap-ui-bootstrap"
data-sap-ui-libs="sap.ui.commons,sap.ui.table,sap.ui.ux3"
data-sap-ui-xx-bindingSyntax="complex"></script>
然后使用这两个属性:
var oLabel = new sap.ui.commons.Label({
text : "{firstName} {lastName}"
});
答案 1 :(得分:8)
您可以使用calculated fields for data binding,例如:
var oLabel = new sap.ui.commons.Label()
.bindProperty("text", {
parts: [
{path: "/firstName", type: new sap.ui.model.type.String()},
{path: "/lastName", type: new sap.ui.model.type.String()}
],
formatter: function(firstName, lastName){
return firstName + " " + lastName;
}
});
答案 2 :(得分:0)
Qualitue和Nikolay的解决方案都运行良好。对于简单的组合装订情况,即只需将两根琴弦放在一起,Nikolay就更好了,因为它很简单。关键是要设置data-sap-ui-xx-bindingSyntx =“complex”,否则它就不起作用了。对于更复杂的绑定情况,即需要先更改数据类型然后再绑定,Qualiture值得做。这是更通用的解决方案,但也更复杂。