Как загрузить столбцы через ajax в табуляторе - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь загрузить столбцы в табуляторе 4.5, используя следующее:

var table = new Tabulator("#tables", {
    ajaxURL:"worker.php?data",
    ajaxRequestFunc:queryRealm,
    cellEdited:cEdit,
    history:true,
    clipboard:true,
    //autoColumns:true,
    clipboardPasteAction:"replace",
    layout:"fitData",
    columns:getColumns,
});

function getColumns(){
    return new Promise(function(resolve, reject){
        $.ajax({
            url: "worker.php?columns",
            success: function(data){
                resolve(data);
            },
            error: function(error){
                reject(error);
            }
        })
    });
}

Но я получаю ошибку:

tabulator.min.js:4 Uncaught TypeError: this.options.columns.slice is not a function
    at t.u._clearObjectPointers (tabulator.min.js:4)
    at t.u._create (tabulator.min.js:4)
    at new t (tabulator.min.js:4)
    at (index):84

Скажите, пожалуйста, как я могу загрузить столбцы в табулятор через ajax?

1 Ответ

1 голос
/ 31 марта 2020

Нельзя передать функцию asyn c в параметр столбцов. Он ожидает массив столбцов.

Поэтому вместо передачи getColumns в параметр столбцов вы должны получить значение из getColumns, а затем передать его в параметры Tabulator.

I Я немного перестроил ваш код, думаю, это должно сработать.

function getColumns(){
    return new Promise(function(resolve, reject){
        $.ajax({
            url: "worker.php?columns",
            success: function(data){
                resolve(data);
            },
            error: function(error){
                reject(error);
            }
        })
    });
}

getColumns().then((columns) => {
  var table = new Tabulator("#tables", {
    ajaxURL:"worker.php?data",
    ajaxRequestFunc:queryRealm,
    cellEdited:cEdit,
    history:true,
    clipboard:true,
    //autoColumns:true,
    clipboardPasteAction:"replace",
    layout:"fitData",
    columns:columns,
  });
});

...