Предотвращение выбора автоматической сортировки
У меня есть массив объектов, которые предоставляются из WebService (порядок списка важен). Я загрузил объект JSON в элемент Selectize, но он переупорядочивает список без использования порядка объекта.
Это ссылка на текущую проблему.
$('#testSelect').selectize({
maxItems: 1,
valueField: 'Id',
labelField: 'Descripcion',
searchField: 'Descripcion',
options: data
});
Заклинание здесь: http://jsfiddle.net/LYYab/
Я отключил 'sortField', но он не работает.
Любая помощь будет принята с благодарностью.
Спасибо.
Ответы
Ответ 1
Ваш sortField
может выглядеть так:
sortField: [{field: 'Descripcion', direction: 'desc'}, {field: '$score'}]
Убедитесь, что параметр overriden sortField
содержит специальное поле $score
. В противном случае, согласно документации, он будет добавлен перед всеми другими полями, эффективно перекрывая предоставленный заказ.
Ответ 2
По какой-то причине я предположил, что у вас не было доступа к данным, прежде чем он был передан Selectize. Если вы это сделаете, вы можете просто добавить индекс сортировки:
var currentSortId = 0;
$.each(data, function(i, v) {
currentSortId = currentSortId + 1; // First ID is 1!
v.sId = currentSortId;
});
а затем укажите, что в параметрах Selectize с sortField: 'sId'
.
Fiddle здесь
Конечно, это работает только до тех пор, пока кто-то не введет в текстовое поле, тогда порядок будет основан на том, что "наилучшее соответствие" для текстового ввода. Если вы должны сохранить заказ, когда кто-то печатает, вам нужно будет определить свою собственную функцию score
- вам понадобится функция, которая возвращает функцию. Внутренняя функция принимает и элемент и текущий запрос и должна возвращать sId
, чтобы сохранить порядок, если элемент соответствует, в противном случае возвращает 0.
См. score
под обратными вызовами в документации.