Как использовать обратные вызовы tabulator.info, когда таблица уже инициализирована? - PullRequest
0 голосов
/ 28 мая 2020

tabulator имеет довольно много обратных вызовов: http://tabulator.info/docs/4.6/callbacks

Проблема в том, что у меня уже есть инициализированный табулятор, и я не знаю, как добавить настраиваемый обратный вызов этой таблицы. В моем случае это обратный вызов загрузки (http://tabulator.info/docs/4.6/callbacks#download), но это может быть и любой другой обратный вызов.

Есть ли способ прослушивать эти обратные вызовы примерно так:

$(document).on('cellClick', myTabulator, function(e, cell) {
  console.log('clicked cell:', cell);
});

Спасибо за вашу помощь!

PS: Это мой пример настройки:

var tab = new Tabulator({ ... no control over this part ... });

// --- other file ---
// now I want to listen for several events here
// finding the table is quite hidden in the docs:
// http://tabulator.info/docs/4.6/options#find-table
var myTab = Tabulator.prototype.findTable("#example-table")[0];

// does something like this exist?
// or is it somehow possible?
myTab.on('cellClick', function() { ... });

1 Ответ

0 голосов
/ 28 августа 2020

Невозможно напрямую изменить обратные вызовы после инициализации таблицы, но вы можете использовать небольшую хитрость, чтобы решить проблему, сохранив свои обратные вызовы во внешнем объекте, на который вы затем ссылаетесь.

Мы начинаем с определения объекта обратных вызовов:

var callbacks = {
    cellClick:function(e, cell){
        //do something
    }
}

Затем мы создаем табулятор как обычно, но когда мы определяем обратный вызов cellClick , мы будем использовать анонимную функцию который затем ссылается на наш объект обратного вызова:

var table = new Tabulator("#example-table", {
    cellClick:function(e, cell){
        //e - the click event object
        //cell - cell component

        callbacks.cellClick(e, cell);
    },
});

Делая это таким образом, это означает, что если мы хотим изменить наш обратный вызов позже, мы просто заменяем его в объекте обратного вызова:

callbacks.cellClick = function(e, cell){
    //do something else
}

Таким образом, нам не нужно перестраивать таблицу, ссылка изменится, и все

...