我们目前正在处理两个列表。一个是附件,另一个是时间线。
两者都是列表(查看文件):
<IconTabFilter
icon="sap-icon://attachment"
key="AttachmentTab"
text="{i18n>Attachments}">
<List
id="AttachmentList"
includeItemInSelection="true">
</List>
</IconTabFilter>
<IconTabFilter
icon="sap-icon://work-history"
key="TimelineTab"
text="{i18n>History}">
<List
id="Timeline"
includeItemInSelection="true">
</List>
</IconTabFilter>
两者都使用类似的 oData 服务将数据绑定到视图。唯一的区别是 CustomListItem。每个 CustomListItem 显示相同的信息。当直接调用 web 服务时,我们会得到不同的条目。
我们也使用 StandardListItem 进行了尝试,但都没有成功(控制器文件):
if (evt.getParameter("key") === "AttachmentTab") {
var template = new sap.m.StandardListItem({
type: "Active",
title: "{Objecttext}",
description: "{Filename}",
icon: {
path: "Type",
formatter: fis.eim.approval.util.Formatter.attachmentIcon
},
press: this.handleAttachmentPress
});
this.byId("AttachmentList").bindItems(
"/Invoices(id='" + id + "')/Attachments",
template
);
}
if (evt.getParameter("key") === "TimelineTab") {
var template = new sap.m.CustomListItem({
content: [
new sap.m.ObjectIdentifier({
title: "{Heading}"
}),
new sap.m.Text({
text: "{Text}"
})
]
});
this.byId("Timeline").bindItems({
path: "/Invoices(id='" + id + "')/Timeline",
template: template
});
}
但它不适用于历史时间线,附件显示得很好。
我们不知道如何进一步调试该问题。关于 bindItems 函数可能出现什么问题的任何建议?
编辑:bindItems() 函数调用后的 oData 模型日志
oData:
Approvals('0000000000014886'):
Approvals('0000000000015641'):
Approvals('0000000000016369'):
Approvals('0000000000016370'):
Approvals('0000000000016492'):
Attachments(id='foobar'):
Attachments(id='barfoo'):
Timeline(Belnr='',Gjahr='',Bukrs='',EdcObject=''):
LineItems(Id='0000000000000000',Rblgp='000005'):
LineItems(Id='0000000000016369',Rblgp='000002'):
LineItems(Id='0000000000016370',Rblgp='000003'):
LineItems(Id='0000000000016370',Rblgp='000004'):
有趣的是,所有其他 oData 调用都有参数,但没有时间线。打开元素的子树时,我们可以看到所有其他时间轴条目重复多次的标题和文本。
所以问题是,其他时间线条目在哪里?网络选项卡显示,所有条目都已加载,并且只有最后一个 json 响应在 oData 模型中。
亲切的问候,
迈克尔