2013-11-20 464 views
1

目前我有一个下拉菜单,可以在服务器上使用ajax请求,但是在select2初始化时附加一些默认选项也很好。用initSelection函数我只能附加一个选项,但不能完全预装数组。我也试图使用数据选项,但它不起作用。 这里是我的代码:SELECT2 ajax - 预加载的选项

$("#address-select2").select2({ 
    placeholder: "--- ' . t('I\'ll add new address') . ' ---", 
    minimumInputLength: 3, 
    ajax: { 
     url: "/ajax/address_autocomplete/from", 
     dataType: "json", 
     type: "POST", 
     data: function (term, page) { 
      return { 
       q: term 
      }; 
     }, 
     results: function (data, page) { 
      return {results: data.addresses}; 
     } 
    }, 
    initSelection: function (element, callback) { 
     $.ajax("/ajax/address_autocomplete/from/100", { 
      dataType: "json" 
     }).done(function(data) { 
      callback(data.addresses[0]); 
     }); 
    }, 
    formatResult: function (address) { 
     return "<span class=\"dropdown-element\">" + address.text + "</span>"; 
    }, 
    formatSelection: function (address) { 
     return address.text; 
    }, 
    formatNoMatches: function() { return "' . t('No result found!') . '";}, 
    formatSearching: function() { return "' . t('Searching...') . '"; }, 
    formatLoadMore: function (pageNumber) { return "' . t('Loading results...') . '"; }, 
    dropdownCssClass : "bigdrop" 
}); 

回答

1

请不要通过callback(data.addresses[0]); 请直接传递数组这样callback(data.addresses); 它应该工作我都做到了。