我有一个OData源,它提供的结果行包含first_name
和last_name
。
我想在名为全名的列的表中显示这些内容。
我正在尝试使用JSView(似乎比XML少一些笨拙)。
我可以像这样进行1:1绑定:
var template = new sap.m.ColumnListItem({
// ...,
cells: [
new sap.m.Text({
text: "{first_name}"
})
]
});
但是我无法弄清楚如何将多个字段绑定/连接到Text控件,或者如何将多个Text控件放入一个单元格。
编辑:这与其他建议的解决方案并不完全相同,因为这是针对JSView而不是XMLView的。
答案 0 :(得分:4)
您可以使用以下格式通过简单绑定将两个值连接起来。
<Text text="{first_name} {last_name}" />
new sap.m.Text({
text: "{first_name} {last_name}"
});
为了启用复杂绑定语法(又名 CompositeBinding ),需要以下引导程序设置:
<script id="sap-ui-bootstrap" src="https://.../resources/sap-ui-core.js"
data-sap-ui-compatversion="edge"
...
>
答案 1 :(得分:0)
这花了我几个小时的搜索和反复试验,但是我终于弄清楚了要使用格式化程序回调:
var template = new sap.m.ColumnListItem({
id: "column_template",
type: "Navigation",
visible: true,
cells: [
new sap.m.Text("activity", {
text: {
parts: [
{path: "first_name"},
{path: "last_name"}
],
formatter: function(a,b){
return a+" "+b;
}
}
})
]
});
parts
显然必须是具有path
属性的对象数组。路径值必须与odata源匹配。
然后,这些值将作为参数传递给formatter
回调。
编辑:您还可以使用模板进行简单的串联,但是有一个窍门-您必须将data-sap-ui-compatVersion="edge"
添加到引导程序中,然后才能进行以下操作:
new sap.m.Text("activity", {
text: "{first_name} {last_name}"
});