我有一个select2下拉列表,配置为与远程数据一起使用。但是,我的远程数据源以一种似乎与select2不兼容的格式提供搜索结果。远程数据例如如下:
...
items: [ { value: 1, displayText: "First" }, { value: 2, displayText: "Second" } ]
...
但是select2似乎期望“id”和“text”字段。我检查了所有选项,并尝试使用formatSelection
,formatResult
回调,但直到现在都没有成功,我总是得到关于“item.text”未定义的javascript错误。
我无法提供jsFiddle,因为遗憾的是,Web API不公开。
有没有办法配置select2以使用自定义“id”和“text”字段?或者对于这种情况,还有什么可以成为一个好的解决方法?
答案 0 :(得分:1)
好的,我在发布问题后几乎立刻就知道了。可能这不是最有效的方法,所以如果有人有更好的答案,我仍然很高兴。
我设法在results
选项的ajax
回调中进行了转化。
$("#mySelect").select2({
minimumInputLength: 3,
ajax: {
url: '/',
params: {
type: 'POST',
dataType: 'json',
},
quietMillis: 200,
data: function(term, page) { // page is the one-based page number tracked by Select2
return {
search: term,
pageSize: 10,
pageIndex: page-1,
};
},
results: function(data, page) {
var more = (page * 10) < data.Total; // whether or not there are more results available
return { results: $.map(data.Results, function(e, i) {
return { id: e.value, text: e.displayText, data: e };
}), more: more };
}
}