Select2 v4.0.0 性能问题

Posted

技术标签:

【中文标题】Select2 v4.0.0 性能问题【英文标题】:Select2 v4.0.0 Performance Issue 【发布时间】:2016-01-11 15:23:21 【问题描述】:

在使用 select2 下拉适配器时,我在 IE 中遇到了大量项目的性能问题。看起来这不是 select2 的新问题,人们过去已经解决了它(即这里Select2 performance for large set of items)

但是,通过查看源代码,似乎对上面链接的解决方案的支持在 select2 v4.0.0 中已被弃用。你们中的任何人使用 select2 v4.0.0 是否遇到过大型列表(特别是在 IE 中)的性能问题?如果是这样,您是如何度过难关的。我想在下拉列表中使用某种“分页”来解决问题,如上面的链接所示……但看起来它可能比它的价值更麻烦。接受任何建议。

【问题讨论】:

【参考方案1】:

您可以在使用 select2 时向服务器发送请求,而不是用大量不必要的数据填充它,而且它的性能要好得多。 举个例子:

$('#a_tags').select2(
                        placeholder: '',                            
                        allowClear : true,
                        minimumInputLength : 2,

                        ajax : 
                                    url : base_url + 'c_options/you_example',
                                    dataType : 'json',
                                    delay : 250,
                                    data : function(params)
                                        return 
                                                    term : params.term, // search term
                                                    type : 'tags'
                                        ;
                                    ,
                                    processResults : function(data, page)
                                        dataObj = new Array();
                                        results: $.map(data, function(obj)
                                            c(obj.l_id)
                                            c(obj.l_details)
                                            dataObj.push(
                                                        id : obj.o_id,
                                                        text : obj.o_name_a
                                            );
                                        )
                                        return 
                                            results : dataObj
                                        ;
                                    ,
                                    cache : true
                        
            );

【讨论】:

我应该提到我试图分页的数据是本地的(因为黑暗领主自己强加的原因)。然而,你的评论确实激发了一些想法。我发现 select2 有一个称为 InfiniteScroll 的适配器。当与自定义数据装饰器(或适配器)结合使用时,它工作得非常好。您需要自定义数据装饰器(适配器)的原因是因为您需要覆盖查询方法以返回一个对象,该对象除了回调的“结果”之外还具有“分页”字段。我不确定无限卷轴是否应该像这样使用。 这是一个 JSBin link 显示了一些代码。它本质上是上面我的问题中提到的问题中代码的 select2v4.0.0.0 包装 ***.com/questions/15041058/…

以上是关于Select2 v4.0.0 性能问题的主要内容,如果未能解决你的问题,请参考以下文章

Immutable.js v4.0.0-rc.12 准备好投入生产了吗?

Sequelize '方言需要从 v4.0.0 开始明确提供'

在 WordPress 中升级到 Bootstrap v4.0.0-beta 后,模态和下拉菜单不起作用

在 AWS EMR v4.0.0 上使用 Pyspark 配置 Ipython/Jupyter 笔记本

React Hot Loader v4.0.0 + Webpack 4 开发服务器未更新应用程序

魔众文章系统 v4.0.0 升级ModStart,系统重构