Selectize.js =如何阻止它自动加载远程数据 - 建议来源?

时间:2014-07-07 08:53:44

标签: jquery selectize.js

使用selectize.js插件, https://github.com/brianreavis/selectize.js/blob/master/docs/usage.md

每当我输入输入字段时,似乎都会对load()函数进行分析..

我只想在初始化期间加载一次...在这一小时内尝试弄清楚...我觉得它没有这样的功能,或者我错过了什么?< / p>

谢谢你们......

2 个答案:

答案 0 :(得分:8)

要首次进行选择性输入加载,您可以进行以下操作:

$('#select').selectize({
    preload: true, // make selectize load options after initialization
    load: function(query,callback){
        this.settings.load = null; // prevent selectize from loading when typing
        // also instead of this you can 
        // override this.onSearchChange = function noop(){};
        $.ajax({...}).then(function(response){
            callback(response);
        },function(){
            callback();
        }) 
    }
});

答案 1 :(得分:2)

我无法解决这个问题。文档分为用法和API

selectize.js的加载选项用于查询/响应服务,该服务将根据查询返回可用数据的子集。每次查询更改时都会触发它。

当然,如果您的数据源不接受查询参数,则不需要这样做。在这种情况下,一次性数据加载就足够了。

根据API,您可以获取选择实例并在其上调用多种方法,包括加载。

<script>
    var $select = $('#select').selectize({
        valueField: 'value',
        labelField: 'label',
        searchField: ['label']
    });

    var selectize = $select[0].selectize;

    selectize.load(function (callback) {
        $.ajax({
            url: 'http://localhost:64596/api/things',
            type: 'GET',
            error: function (e) {
                console.error(e.responseText);
                callback();
            },
            success: function (data) {
                callback(data);
            }
        });
    });
</script>