[英]Handsontable afterCreateRow fires multiple times when pasting rows
我的情況是:我有一個包含四行的表。 前三行填充數據,第四行為空白。 我突出顯示整個前三行,復制,然后粘貼到第四行。 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
。 我該如何實現?
您可以使用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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.