Я пытаюсь вставить href в один из моих столбцов в DataTables, но у меня возникают некоторые проблемы, так как мне нужен фактический href, чтобы показать мой слаг, а затем полное название компании.
Пример того, как это должно быть отформатировано:<a href = "slug">"company"</a>
Реальные данные:<a href = "toyota-cars">Toyota Cars</a>.
Я использую columns.render, что кажется правильной функцией, но я не могу понять, как я могу получить «компанию» между тегами a. Функция даже не использует спецификатор «data», вместо этого она сначала берет данные из моего файла ajax, который в данном случае является slug.
Мой файл DataTable.js
ajax: '/api/datatable',
columns: [
{ data: 'slug' },
{ data: 'company' },
],
"columnDefs": [
{ targets: [0, 1], visible: true},
{ "targets": 0,
"data": "This doesnt even seem needed?",
"render": function ( data, type, row, meta ) {
return '<a href = "/company/'+data+'">full company name</a>';
}
}
],



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я дам ответ, исходя из предположения, что вы пытаетесь объединить значения двух столбцов. Если мое предположение неверно, обновите вопрос, чтобы уточнить «ожидаемые и фактические» результаты.
Вы используете параметр data в функции render. Этот параметр основан на значении, которое вы указали в columns.data. В вашем случае (с target === 0) data будет содержать значение, полученное DataTable для столбца { data: 'slug' }.
Если вы хотите объединить значения из разных столбцов в один, то функция render - правильный способ сделать это. Однако вместо data следует использовать параметр row, который содержит все поля "ключ-значение" для строки.
Например:
// ...
"targets": 0,
"data": null,
"render": function ( data, type, row, meta ) {
return '<a href = "/company/'+row.slug+'">'+row.company+'</a>';
// or whatever your row object key-value structure is
}
// ...
Я немного запутался в том, что вы пытаетесь получить. Возможно, было бы яснее, если бы вы указали «ожидаемые против фактических» результатов, а не «должны быть против реальных данных». «Настоящие данные» - это то, чего вы пытаетесь достичь или получаете? Кстати, параметр
dataв функцииrenderоснован наcolumns.data, который вы указали ранее. Начиная сtarget === 0, означает, что вы берете данные из первого столбца. Все вместе означает, что вы заменяетеdataв строке HTML на то, что DataTables найдет для столбца «slug».