簡體   English   中英

粘貼行時,Handsontable afterCreateRow會觸發多次

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM