SAPUI5:主 - 详细信息视图中的sap.ui.table.Table列的总和

时间:2018-05-04 13:27:17

标签: javascript sapui5

我使用oData在SAPUI5上有一个Master-Detail视图。在详细信息上,我有sap.ui.table.Table,我想计算每列的总和,并将其放在sap.m.Label上,该busyStateChanged位于表格的页脚。

我在表的_onBindingChange()事件中运行一个函数,负责通过添加列单元格的值来计算总和。问题是当触发事件时,绑定上下文尚不可用。我已经尝试将代码放在sap.m.Input方法中,但即使绑定上下文可用,oData中的值在表中存在的Promise字段中也不可见,因此和计算错误。

作为一种解决方法,我在计算总和(从busyStateChanged事件触发)之前使用tableAfterRender: function() { var that = this; var waitSomeTime = this.sleep(50); waitSomeTime.then(function() { that.calcSums(); }); }, sleep: function(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } 等待几毫秒。代码如下所示:

sap.ui.table.Table

问题是Promise不能与Internet Explorer一起使用。是否存在替代方法(例如,Promise的替代方案 - 优选不是工作者,因为它需要我已阅读的新文件或rm -rf var/cache/prod事件)在计算总和之前等待数据加载?

非常感谢!

1 个答案:

答案 0 :(得分:0)

找到解决方案:

代码应如下所示:

tableAfterRender: function() {
    var that = this;

    setTimeout(function() {
        that.calcSums();
    });
}

我完全删除了sleep并计算setTimeout()中的总和。它对我来说很完美。