我使用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
事件)在计算总和之前等待数据加载?
非常感谢!
答案 0 :(得分:0)
找到解决方案:
代码应如下所示:
tableAfterRender: function() {
var that = this;
setTimeout(function() {
that.calcSums();
});
}
我完全删除了sleep
并计算setTimeout()
中的总和。它对我来说很完美。