Href в DataTables

Я пытаюсь вставить 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>';
     } 
   }

],

Я немного запутался в том, что вы пытаетесь получить. Возможно, было бы яснее, если бы вы указали «ожидаемые против фактических» результатов, а не «должны быть против реальных данных». «Настоящие данные» - это то, чего вы пытаетесь достичь или получаете? Кстати, параметр data в функции render основан на columns.data, который вы указали ранее. Начиная с target === 0, означает, что вы берете данные из первого столбца. Все вместе означает, что вы заменяете data в строке HTML на то, что DataTables найдет для столбца «slug».

Alexander 25.04.2018 09:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
587
1

Ответы 1

Я дам ответ, исходя из предположения, что вы пытаетесь объединить значения двух столбцов. Если мое предположение неверно, обновите вопрос, чтобы уточнить «ожидаемые и фактические» результаты.

Вы используете параметр 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
}
// ...

Другие вопросы по теме