我的场景:我有一个有四行的表。前三行填充数据,第四行填空。我突出显示整个前三行,复制,然后粘贴到第四行。 Handsontable生成两个新行,为粘贴的数据腾出空间。
我的问题:afterCreateRow事件触发两次,每次触发数量为1.我希望它以2的数量触发一次,因为Handsontable事先知道必须创建两行。
这是展示这种现象的jsfiddle。
这是我正在尝试做的事情:
function afterCreateRow(row, amount) {
for (var i = row; i < row + amount; i++) {
model.initializeNewRow(i);
model.calculator.cascadeRow(i);
model.calculator.calculateRow(i);
}
model.calculator.updateTotals();
model.history.submitBatch();
}
我只想为每个用户操作调用submitBatch
一次。我怎样才能做到这一点?
答案 0 :(得分:0)
您可以使用window.setTimeout()
延迟提交,直到某段时间过去而没有新的afterCreateRow()
来电:
function afterCreateRow(row, amount) {
for (var i = row; i < row + amount; i++) {
model.initializeNewRow(i);
model.calculator.cascadeRow(i);
model.calculator.calculateRow(i);
}
model.calculator.updateTotals();
delayed(model.history.submitBatch, 100);
}
var g_id = null;
function delayed(fn, timeoutms){
if(g_id) window.clearTimeout(g_id);
g_id = window.setTimeout(fn, timeoutms);
}