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

Javascript 如何使用OData模型将两个数据属性直接绑定到一个控件属性中?,javascript,sapui5,Javascript,Sapui5,我使用OData模型将UI控件绑定到GW服务。在服务元数据中,数据结构中有“FirstName”和“LastName”。在UI上,比如说,我使用的是标签控件 现在的问题是如何直接使用OData模型将Label的Text属性绑定到“FullName”(即“FirstName”+“LastName”)字符串?如果使用JSON模型,我可以创建一个局部变量,FullName=FirstName+LastName,并将Text属性绑定到FullName。但是我如何使用OData模型来实现这一点呢?您可以使

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

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

您可以使用,例如:

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;
  }
});
  • 将通过创建新列并添加新字段来使用视图中的计算列

  • 将使用格式化程序属性。请参考以下示例:

    new sap.ui.commons.TextView ({ 
        text: {  path: o.value, // o is an object in my local scope
            formatter: function(i) {
                // after getting your col1 and col2 values you could do the following
                var yourConcatValue = col + col2;
                return yourConcatValue;
            }                                
       }                          
    });
    

  • 此外,您还可以在sap-ui-core.js中启用复杂数据绑定:


    Qualitue和Nikolay的解决方案都很有效。对于简单的组合装订盒,也就是说,只要把两条线放在一起,尼古拉的更好,因为它很简单。关键是要设置数据sap ui xx bindingSyntx=“complex”,否则它将无法工作。对于更复杂的绑定情况,即需要先更改数据类型,然后再进行绑定,Qualiture是值得做的。这是一个更通用的解决方案,但也更复杂。

    添加
    数据sap ui compatversion=“edge”
    是当前的最佳做法。看见
    <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}"
    });