Проблема с тегами при использовании внешнего набора данных и рендеринга данных с использованием таблиц данных - PullRequest
1 голос
/ 13 июня 2019

У меня есть проект, где я использую DataTables и yadcf. До сих пор я использовал PHP для заполнения таблицы при генерации DOM. Теперь я хочу использовать AJAX для разбивки таблицы, которая отлично работает, за исключением того, что она нарушает функциональность тегов yadcf. Если я хочу, чтобы это работало, мне нужно отправить полный список тегов в формате HTML через AJAX. Мне бы хотелось, чтобы он работал просто, отправляя теги в виде массива, и использовал функцию «рендеринга» в DataTables для преобразования их в отдельные элементы DOM.

Я пытался использовать и "html", и "rendered_html" в "column_data_type" в yadcf, но ничего не помогло.

var dataset = [{"name":"B. Gates", "tags":["js", "css", "asp"]},{"name":"S. Jobs", "tags":["js", "css", "php"]}];

var table = $('table').DataTable({
    data: dataset,
    columns: [
        {"data": "name"},
        {
            "data": "tags",
            "render": function(data, row, type){
                var tags = '';
                for (i=0; i<data.length; i++)
                {
                    tags += '<span class="badge badge-secondary">' + data[i] + '</span>&nbsp;';
                }
                return tags;
            }
        }
    ]
});

yadcf.init(table, [
    {
        column_number : 1,
        column_data_type: "rendered_html", //html
        html_data_type: "text",
        filter_default_label: "Select tag"
    }
]);

Я сделал пример скрипки: https://jsfiddle.net/majbom/3d4npzsr/1/

При использовании «html» в «column_data_type» список тегов остается пустым после заполнения таблицы. Когда я использую «rendered_html», я получаю список со всеми представленными комбинациями тегов в таблице. Что я хочу, это список всех отдельных представленных тегов в таблице.

Заранее спасибо:)

1 Ответ

0 голосов
/ 14 июня 2019

Вы должны использовать text_data_delimiter: String.fromCharCode(160) в yadcf init для этого столбца, причина использования String.fromCharCode(160) заключается в том, что каким-то образом &nbsp; используется в качестве разделителя в строке (вместо обычного пробел

Как это

yadcf.init(table, [
    {
    column_number : 1,
    column_data_type: "rendered_html", //html
    html_data_type: "text",
    filter_default_label: "Select tag",
    text_data_delimiter: String.fromCharCode(160)
  }
]);

https://jsfiddle.net/vedmack/4sen9xhu/5/

...