【发布时间】:2017-12-05 01:28:57
【问题描述】:
我有一个用于在我的 UI5 xml 视图中发布 cmets 的 Feed 列表
<layout:content>
<m:FeedInput post="onFeedPost" class="sapUiSmallMarginTopBottom"/>
<m:List id="feedList" showSeparators="Inner" items="{path: '/table', sorter: {path: 'DATE', descending: true}}">
<m:FeedListItem sender="{MEMBERID}" timestamp="{DATE}" text="{COMMENT}" convertLinksToAnchorTags="All"/>
</m:List>
</layout:content>
我不想显示具有相同文本和日期的重复 cmets,而是将它们保存在数据库中。我的想法是在控制器中迭代项目以执行此操作,但我不确定如何处理生成的数组
var results = [];
var comments = feed.getItems();
for (var n = 0; n < comments.length - 1; n++) {
var contained = false;
for (var m = n + 1; m < comments.length; m++) {
if (comments[n].getText() === comments[m].getText() &&
comments[n].getDate() === comments[m].getDate()) {
comments.pop(m);
contained = true;
if (!results.includes(comments[n])) {
results.push(comments[n]);
}
}
}
if (!contained && !results.includes(comments[n])) {
results.push(comments[n]);
}
}
// replace list items with results array
我不知道如何用新数组替换提要列表的项目,因为有一个 getItems 函数但没有一个 setItems 函数。在我看来,可能有一种更简单更惯用的 UI5 方式来做到这一点,但我还没有找到。
【问题讨论】:
-
对模型数据进行上述操作。做,
comments = model.getProperty('/table');然后应用过滤逻辑,最后将结果存储回数组:model.setProperty('/table', results)。在这里,我假设模型是 JSON 模型。 -
@RahulBhardwaj 'cmets = model.getProperty('/table');'因为我的表返回未定义,即使它显示在绑定中。我为后端使用 odata 服务,但创建 json 来执行请求(创建、删除)。不确定这是否使它成为一个 json 模型。
标签: javascript xml sapui5