selectize.js lockOptgroupOrder выбрасывает исключение - PullRequest
0 голосов
/ 24 октября 2018

У меня есть выборка, где я устанавливаю optgroups, задаю им $ order, а затем пытаюсь установить lockOptgroupOrder, который в результате выдает исключение: «Uncaught TypeError: Невозможно прочитать свойство« $ order »из undefined».

Все это прекрасно работает, прежде чем я пытаюсь использовать lockOptgroupOrder (за исключением того, что он сортируется неправильно).Я не могу понять, почему он не может найти $ order, когда я явно передаю $ order как часть optgroups.(Я также попытался установить optgroupOrder: ['first', 'recents', 'favorites', 'all'] без удачи.)

var stuff = $('#stuff').selectize({
    optgroups: [
        {value: 'first', label: '', $order: 1},
        {value: 'recents', label: 'Recents', $order: 2},
        {value: 'favorites', label: 'Favorites', $order: 3},
        {value: 'all', label: 'All', $order: 4}
    ],
    optgroupField: 'type',
    lockOptgroupOrder: true,
    //more things like load() and onChange()...
}); 

Ошибка:

Uncaught TypeError

Это ломаетсяв этом цикле:

enter image description here

Я исчерпал все другие формы исследования этой ошибки.Кто-нибудь сталкивался с этим раньше?

1 Ответ

0 голосов
/ 25 октября 2018

Итак, после многих, многих часов поиска в Google, отладки Chrome и общего плача я выяснил проблему, и теперь я публикую свое решение на случай, если кто-нибудь еще столкнется с этой ошибкой.

Благодаря этой доске обсуждений:

lockOptgroupOrder breaks onChange

Мне удалось собрать воедино, что один из моих элементов данных пропускал тип ''field (optgroupField).Я прошел все 1350 опций, прежде чем понял, что это была опция по умолчанию, которую я добавил к селекту перед тем, как превратить его в селект.В этом случае мне нужна эта опция, чтобы остаться, поэтому я не могу просто избавиться от этой строки HTML.Но я также не могу добавить атрибут «тип» к опции или даже атрибут типа данных, он не передает его.

Наконец-то я понял из этой доски обсуждений:

Добавить атрибут данных в параметры selectize.js

, которым я могу назначить данные-данныеатрибут и передать ему имя и значение, а затем он передаст этот атрибут, когда он превратится в выборку.Таким образом, мое окончательное решение состояло в том, чтобы добавить то, что мне было нужно, с помощью опции, прежде чем она превратится в выборку:

<option selected disabled value="default" data-data='{"type":"first"}'>The Stuff</option>

Пусть это поможет какой-то другой бедной душе пройти через это вбудущее.

...