使用Select2仅加载一次远程数据

Yar*_*ron 10 javascript jquery-plugins web

正如标题所示,我只想加载一次远程数据.我想过用一个独立的ajax调用加载一个数据并在控件上"设置"它,但想知道是否有更多的"内置"方式来做到这一点......

Chr*_*s W 8

可以在这里找到解决方案:

https://github.com/ivaynberg/select2/issues/110

$("#selIUT").select2({
    cacheDataSource: [],
    placeholder: "Please enter the name",
    query: function(query) {
        self = this;
        var key = query.term;
        var cachedData = self.cacheDataSource[key];

        if(cachedData) {
            query.callback({results: cachedData.result});
            return;
        } else {
            $.ajax({
              url: '/ajax/suggest/',
              data: { q : query.term },
              dataType: 'json',
              type: 'GET',
              success: function(data) {
                self.cacheDataSource[key] = data;
                query.callback({results: data.result});
              }
            })
        }
    },
    width: '250px',
    formatResult: formatResult, 
    formatSelection: formatSelection, 
    dropdownCssClass: "bigdrop", 
    escapeMarkup: function (m) { return m; } 
}); 
Run Code Online (Sandbox Code Playgroud)

编辑:

我可能误解了你的问题.如果你想加载一次所有数据,那么使用Select2,没有内置的功能来做到这一点.

你建议做一个单一的查询,然后在Select2中使用存储的数据将是你要走的路.