如果数据项不提供" id"如何将select2与远程数据一起使用和"文字"字段名?

时间:2014-04-30 08:19:46

标签: javascript jquery jquery-select2

我有一个select2下拉列表,配置为与远程数据一起使用。但是,我的远程数据源以一种似乎与select2不兼容的格式提供搜索结果。远程数据例如如下:

...
items: [ { value: 1, displayText: "First" }, { value: 2, displayText: "Second" } ]
...

但是select2似乎期望“id”和“text”字段。我检查了所有选项,并尝试使用formatSelectionformatResult回调,但直到现在都没有成功,我总是得到关于“item.text”未定义的javascript错误。

我无法提供jsFiddle,因为遗憾的是,Web API不公开。

有没有办法配置select2以使用自定义“id”和“text”字段?或者对于这种情况,还有什么可以成为一个好的解决方法?

1 个答案:

答案 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 };
        }
      }