【问题标题】:Selectize.js = how to stop it from auto loading remote data-source of suggestions?Selectize.js = 如何阻止它自动加载建议的远程数据源?
【发布时间】:2015-08-18 23:25:14
【问题描述】:

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

似乎每次我在输入字段中输入时都会触发 load() 函数..

我想让它只在初始化期间加载一次...一直在这一个小时试图弄清楚...我感觉它没有这样的功能,或者我错过了什么?

谢谢大家...

【问题讨论】:

  • 显示一些代码你是如何使用它的。你在使用preload 选项吗?

标签: jquery selectize.js


【解决方案1】:

要使选择输入仅在第一次加载时,您可以执行以下操作:

$('#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();
        }) 
    }
});

【讨论】:

    【解决方案2】:

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

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

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

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

    <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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 2021-02-11
      • 1970-01-01
      • 2012-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多