2015-10-13 2 views
1

У меня возникли проблемы с производительностью с большим количеством элементов в IE при использовании адаптера drop2 select2. Похоже, что это не новый вопрос для выбора2, и люди прошли через него в прошлом (то есть здесь Select2 performance for large set of items)Select2 v4.0.0 Ошибка производительности

Однако, просматривая источник, похоже, что поддержка решения, связанного выше, устарела в select2 v4.0.0. Кто-нибудь из вас использовал проблемы с производительностью select2 v4.0.0 с большими списками (особенно в IE)? Если да, то как вы прошли через это. Id нравится подходить к проблеме с каким-то «разбиением на страницы» в раскрывающемся списке, как показано в ссылке выше ... но похоже, что это может быть больше проблем, чем его ценность. Открыта для любых предложений.

ответ

0

Вы можете отправить запрос на сервер при использовании 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 
         } 
      }); 
+0

я упомянул, что данные я пытаюсь постраничным локален (из-за причины, налагаемых сам Темным Лордом). Однако ваш комментарий вызвал некоторые идеи. Я обнаружил, что у select2 есть адаптер, называемый InfiniteScroll. При использовании в сочетании с пользовательским декоратором данных (или адаптером) он работает очень хорошо. Причина, по которой вам нужен пользовательский декоратор данных (адаптер), заключается в том, что вам нужно перезаписать метод запроса, чтобы вернуть объект с полем «pagination» в дополнение к «результатам» для обратного вызова. Я не уверен, что для этого нужно использовать Infinite scroll. – WalkMeThroughIt

+0

Вот JSBin [link] (https://jsbin.com/sajufi/edit?html,js,output), показывающий часть кода. Это, по сути, обложка select2v4.0.0.0 кода в вопросе, упомянутом в моем вопросе выше http://stackoverflow.com/questions/15041058/select2-performance-for-large-set-of-items – WalkMeThroughIt