繁体   English   中英

TABULATOR - Mutator 不显示数据

[英]TABULATOR - Mutator not displaying data

我有一个不显示数据的 mutator 问题。 我有五列从 AJAX URL 获取数据(这些工作正常),我有第六列,我打算在其中使用 FETCH 从另一个 URL 获取数据并使用 mutator 显示它。 下面是获取数据的代码:

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
    })     
}

我已经尝试过使用 promises 而不是 ASYNC AWAIT 并且得到了相同的结果。 此外,我还尝试升级到 4.5.3 版,因为我在另一篇文章中看到了与我的问题非常相似的问题,但也无法正常工作。 我可能会补充一点,我可以将数据记录到控制台,但不能将其显示到表格中。 我究竟做错了什么?

Tabulator 中的 Mutators 是同步的,它们会立即返回,因此表在加载表数据之前不必等待数千个 promise 来解决,因为这会显着增加表加载时间。

这意味着您不能在 mutator 中使用异步代码,如 promises 或 await 语句。

正确的方法是在将数据加载到表中之前进行所有这些调用,然后使用setData函数加载完成的数据集

*这是我发布的另一个问题的相同答案。 我不知道我的代码有什么问题,所以我针对两件我认为无关但我错了的事情发布了两个不同的问题。

我想通了,问题是在 Tabulator 中,表中的 mutator 是从另一个源获取数据而不是表其余部分的数据,所以当 mutator 开始工作时,表已经构建好了,我想到了什么最重要的是,mutator 在触发时需要尽快获取数据,但它的源数据还没有准备好,所以我所做的是使用:

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

所以当构建表时,来自 mutator 源的数据已经可用,所以当 mutator 被触发时,它一切正常。 如果它令人困惑,我很抱歉,我不知道如何以其他方式解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM