Как вызвать функцию asyn c из valueFormatter в ag-grid - PullRequest
0 голосов
/ 29 марта 2020

У меня есть таблица ag-grid, и в ней есть столбец со значением formatter:

{
    headerName: "My column",
    valueFormatter: getFormattedIndexValue,
    ...
}

С getFormattedIndexValue Я пытаюсь вызвать функцию asyn c:

async function getFormattedIndexValue (params) {
    if (!params.value) return;
    return await getDecodedValue(table, params.colDef.field, params.value);
}

Это код асинхронной c функции, которую я пытаюсь вызвать:

async function getDecodedValue(table, field, value) {
    const query = `function=decode&table=${table}&field=${field}&value=${value}`;
    const response = await fetch('routines.php', { method: 'post', body: query, headers: {"Content-Type": "application/x-www-form-urlencoded"}});
    return response.text();
}

Но в этом случае valueFormatter не возвращает правильное значение, в результате чего получается [Object Promise]. Есть ли способ вызвать функцию asyn c из valueFormatter и получить правильный результат

1 Ответ

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

valueFormatter не подходит для этого, но вместо этого вы можете создать cellRenderer, и вы сможете обрабатывать необходимые логи c внутри.

но, как я понял, Вы хотите иметь вид ссылки (ключ к значению, идентификатор (как ключ) в базе данных и значение (как отображаемое значение) в сетке представления) - я прав?

Если да, (valueFormatter и valueParser должен использоваться), но без асинхронного вызова c, вам нужно иметь свою пару ключ-значение (словарь) в процессе grid-init.

Вот мой пример:

в процессе инициализации ag-grid Я сохраняю словарь для столбцов в config.ComboData

valueFormatter = (params) => {
    return this.lookupValue(config.ComboData['columnNameHere'], params.value);
};
valueParser = (params) => {
     return this.lookupKey(config.ComboData['columnNameHere'], params.newValue);
}

valueFormatter и params.value - используется при рендеринге ag-grid значения .

valueParser и params.newValue - при обновлении значения ячейки.

и здесь looupValue и lookupKey функции из ag-grid делают c и образец

lookupValue(mappings, key:string) {
    return mappings[key];
}

lookupKey(mappings, name) {
    for (var key in mappings) {
        if (mappings.hasOwnProperty(key)) {
            if (name === mappings[key]) {
            return key;
            }
        }
    }
}
...