我有一个从WebService提供的对象数组(列表的顺序很重要)。我将JSON对象加载到Selectize控件中,但它重新排序列表而不使用对象的顺序。
这是当前问题的链接。
$('#testSelect').selectize({
maxItems: 1,
valueField: 'Id',
labelField: 'Descripcion',
searchField: 'Descripcion',
options: data
});
在这里小提琴:http://jsfiddle.net/LYYab/
我已禁用'sortField'但它不起作用。
非常感谢任何帮助。
感谢。
答案 0 :(得分:12)
您的sortField
可能如下所示:
sortField: [{field: 'Descripcion', direction: 'desc'}, {field: '$score'}]
确保覆盖sortField
包含特殊的$score
字段。否则,根据文档,它将被添加到所有其他字段的前面,从而有效地覆盖提供的订单。
答案 1 :(得分:8)
出于某种原因,我假设您在将数据传递给Selectize之前无法访问数据。如果您这样做,您只需添加排序索引:
var currentSortId = 0;
$.each(data, function(i, v) {
currentSortId = currentSortId + 1; // First ID is 1!
v.sId = currentSortId;
});
然后使用sortField: 'sId'
在Selectize选项中引用它。
小提琴here
当然只有在文本框中有人输入时才会有效,然后顺序基于所输入短信的“最佳匹配”。如果您在有人打字时必须保留订单,则需要定义自己的score
函数 - 您需要一个返回函数的函数。内部函数采用项目和当前查询,如果项目匹配则需要返回sId
以保留订单,否则返回0.
请参阅documentation中回调下的score
。