Вложенные выпадающие фильтры с yadcf select2 и dataTables

Я уже довольно давно успешно использую комбинацию dataTables + yacdf + select2. Теперь я работаю над преобразованием моего select2 в упорядоченный раскрывающийся список с отступом и возможностью выбора optgroup (https://select2.org/options, «Иерархические параметры», Выбираемые оптгруппы в Select2).

Однако с yacdf я не могу передавать данные в select2 в иерархическом формате, подобном приведенному ниже:

var data = [

{ 
  "text": "Group 1", 
  "children" : [
    {
        "id": 1,
        "text": "Option 1.1"
    },
    {
        "id": 2,
        "text": "Option 1.2"
    }
  ]
},
{ 
  "text": "Group 2", 
  "children" : [
    {
        "id": 3,
        "text": "Option 2.1"
    },
    {
        "id": 4,
        "text": "Option 2.2"
    }
  ]
}];

Ранее рабочий код был:

.yadcf([{column_number: 1, filter_type: "multi_select", select_type: 'select2', filter_container_id: "someFilter2", filter_default_label: "Select xxx", filter_reset_button_text: false, style_class: "form-control", 
        select_type_options: {
            multiple: 'multiple',
            width: '100%',
            placeholder: 'something',
            },

        data: [<comma separated list of values>]

Исходный код yacdf утверждает, что:

    Required:           false
    Type:               Array (of string or objects)
    Description:        When the need of predefined data for filter is needed just use an array of strings ["value1","value2"....] (supported in select / multi_select / auto_complete filters) or array of objects [{value: 'Some Data 1', label: 'One'}, {value: 'Some Data 3', label: 'Three'}] (supported in select / multi_select filters)

Примечание: когда filter_type равно custom_func / multi_select_custom_func, этот массив будет заполнять элемент выбора настраиваемого фильтра. "

Неужели это невозможно? Если никому не удалось заставить вложенные выпадающие фильтры работать с таблицами данных иначе?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
329
1

Ответы 1

Вы должны использовать data_as_is: true, прочтите документы для получения дополнительной информации

  • data_as_is Required: false Type: boolean Default value: false Description: When set to true, the value of the data attribute will be fed into the filter as is (without any modification/decoration). Perfect to use when you want to define your own for the filter Note: Currently supported by the select / multi_select filters

Дэниел, спасибо, что изучили это. Я пытался использовать data_as_is: False перед тем, как опубликовать вопрос. К сожалению, когда я загружаю данные в формате массива select2 (см. Ниже) через yadcf с data_as_is: False, select2 вообще не видит этого. Когда я передаю его непосредственно элементу select2, минуя yadcf, он появляется. var data = [{id: 0, text: 'extension'}, {id: 1, text: 'bug'}, {id: 2, text: 'duplicate'}];

Stan K 16.10.2018 14:54

Разобрался, заглянув в исходный код yadcf. Необходимо передать данные в select2 через yadcf в следующем формате: data: ["<option value = \" option A \ "> option A </option>"]

Stan K 16.10.2018 15:15

@StanK "Идеально для использования, если вы хотите определить свой собственный <option> </option> для фильтра"

Daniel 16.10.2018 17:02

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