Я уже довольно давно успешно использую комбинацию 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, этот массив будет заполнять элемент выбора настраиваемого фильтра. "
Неужели это невозможно? Если никому не удалось заставить вложенные выпадающие фильтры работать с таблицами данных иначе?





Вы должны использовать 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
Разобрался, заглянув в исходный код yadcf. Необходимо передать данные в select2 через yadcf в следующем формате: data: ["<option value = \" option A \ "> option A </option>"]
@StanK "Идеально для использования, если вы хотите определить свой собственный <option> </option> для фильтра"
Дэниел, спасибо, что изучили это. Я пытался использовать 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'}];