selectize.js lockOptgroupOrder 抛出异常

selectize.js lockOptgroupOrder throwing exception

我在设置 optgroups 的地方有一个 selectize,给它们一个 $order,然后尝试设置 lockOptgroupOrder,最终抛出异常:"Uncaught TypeError: Cannot read property '$order' of undefined".

在我尝试使用 lockOptgroupOrder 之前,这一切都完美无缺(除了它排序错误)。当我清楚地将 $order 作为 optgroups 的一部分传递时,我不明白为什么它找不到 $order。 (我也试过设置 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()...
}); 

错误:

循环中断:

我已用尽所有其他形式来研究此错误。有人遇到过这个吗?

因此,经过许多小时的谷歌搜索、chrome 调试和普遍的哭泣,我找到了问题所在,现在我发布了我的解决方案,以防其他人遇到此错误。

感谢这个讨论区:

lockOptgroupOrder breaks onChange

我能够拼凑出我的一个数据元素缺少一个 'type' 字段 (optgroupField)。在意识到它实际上是我在将 select 变成 selectize 之前添加到 select 中的默认选项之前,我逐步完成了所有 1350 个选项。在这种情况下,我需要保留此选项,所以我不能只删除那行 html。但是我也不能向选项添加 "type" 属性,甚至不能添加数据类型属性,它不会传递它。

最后我从这个讨论区弄明白了:

Add data-attribute to selectize.js options

我可以分配一个 data-data 属性并将名称和值传递给它,然后当它变成 selectize 时它会传递该属性。所以我的最终解决方案是在它变成 selectize:

之前通过选项添加我需要的东西

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

希望这能帮助其他可怜的人,让他们在未来不必再经历这些。