首页 > 解决方案 > SAPUI5 sap.m.ListBase.getItems() 返回以前的内容?

问题描述

我的应用程序执行以下操作:

  1. 刷新模型
  2. 应用过滤器
  3. 使用.getItems()
  4. 在项目上循环并应用 CSS

在测试 CSS 时,注意到有些地方不对劲,当我第二次按下具有相同过滤器的按钮时,正确的 CSS 属性被应用。开始调试,当我到达循环时,我发现.getItems()似乎返回了表的先前内容。

还注意到在打开调试器并逐步进行时,就在实际内容出现在屏幕上之前,与先前数据相对应的先前列表和正确的 CSS 属性在屏幕上闪烁片刻。认为该方法是异步的,我必须在成功函数中实现循环,但是当我访问文档List getItems()时,我注意到该方法不接受此类参数。

如果以上内容正确并且我没有遗漏任何内容,我该如何检索表格的实际内容?

下面嵌入的代码(实际上是 4 行,其余部分是循环),在此先感谢。

oView.getModel("Report").refresh(true, true);
this.byId("statusReportTable").getBinding("items").filter(oTableSearchState);
this.getModel("Global").setProperty("/statusTableVisible", true);
this.oStsTable = this.getView().byId("statusReportTable");
var aItems = this.oStsTable.getItems();
if (aItems && aItems.length > 0) {
  for (var i = 0; i < aItems.length; i++) {
    if (i === aItems.length - 1) {
      aItems[i].addStyleClass("pinkBackground");
    } else {
      var even = i % 2;
      if (even !== 0 && i < aItems.length) {
        aItems[i].addStyleClass("cyanBackground");
      }
    }
  }
}

标签: listsapui5

解决方案


发帖前应该多一些耐心。找到了答案,只需将事件附加updateFinished到桌子上并将其getItems()放入其中即可。


推荐阅读