TABULATOR - Мутатор не отображает данные - PullRequest
1 голос
/ 19 февраля 2020

У меня проблема с мутатором, не отображающим данные. У меня есть пять столбцов, получающих данные с URL-адреса AJAX (и они работают нормально), и у меня есть шестой столбец, в котором я собираюсь получить данные с другого URL-адреса с помощью FETCH и отобразить их с помощью мутатора. Вот код для извлечения данных:

    const comtot = async function (value, data) {
       let response = await fetch(API_TOT);
       let com = await response.json();

       console.log(com[0].total);
       return com[0].total;
} 

А вот код для столбца с мутатором:

    {
            title: "Cantidad de Compras",
            field: "total",
            align: "center",
            sorter: "number",
            headerFilter: "input",
            mutator: comtot().then((res) => {
                console.log(res);
                return res
            })

        }

Я уже пробовал использовать обещания вместо ASYN C Ждали и имели такой же результат. Кроме того, я также попытался обновить до версии 4.5.3, поскольку я видел это на другом посте с проблемой, очень похожей на мою, и также не работал. Я мог бы добавить, что я могу записывать данные в консоль, но не отображать их в таблице. Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Мутаторы в Tabulator синхронны, они возвращаются сразу, поэтому таблице не нужно ждать тысячи обещаний, чтобы решить, прежде чем загружать данные таблицы, поскольку это значительно увеличит время загрузки таблицы.

Это означает, что вы не можете используйте асинхронный код, такой как обещания или операторы ожидания в мутаторе.

Правильный подход будет заключаться в том, чтобы все эти вызовы выполнялись перед загрузкой данных в таблицу, а затем загружать готовый набор данных с помощью setData функция

0 голосов
/ 12 марта 2020

* Это тот же ответ на другой вопрос, который я написал. Я не знал, что случилось с моим кодом, поэтому я отправил два разных вопроса для двух вещей, которые я думал, что они не связаны, но я ошибался.

Я понял это, проблема заключалась в том, что в Tabulator, мутаторе в таблица получала данные из другого источника, чем для остальной части таблицы, поэтому таблица уже была создана, когда мутатор начал работать, и я понял, что мутатору нужны данные как можно скорее, когда он запущен, но это исходные данные еще не были готовы, поэтому я использовал следующее:

function delayIt() {table.setData(API_URL)}
setTimeout(delayIt, 1000)

, поэтому данные из источника мутатора уже были доступны при создании таблицы, поэтому при запуске мутатора все работало просто хорошо. Извините, если это сбивает с толку, я не мог понять, как объяснить по-другому.

...