如何使用OData模型将两个数据属性直接绑定到一个控件属性中?

时间:2014-03-11 08:45:20

标签: javascript sapui5

我正在使用OData模型将UI控件绑定到GW服务。在服务元数据中,数据结构中有“FirstName”和“LastName”。在UI上,比方说,我正在使用Label控件。

现在的问题是如何使用OData Model直接将Label的Text属性绑定到“FullName”字符串(即“FirstName”+“LastName”)?如果我使用JSON模型,我可以创建一个局部变量FullName = FirstName + LastName,并将Text属性绑定到FullName。但是我怎么能用OData Model做到这一点?

3 个答案:

答案 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值得做。这是更通用的解决方案,但也更复杂。