Select2 - Sorting results by query

前端 未结 3 1491
天涯浪人
天涯浪人 2020-12-31 06:12

I\'m using Select2 version 4.0.0.

If my results contain multiple words, and the user enters one of those words, I want to display the results sorted by where the ent

3条回答
  •  太阳男子
    2020-12-31 06:43

    No needs to keep term:

    $element.select2({
        sorter: function (data) {
            if(data && data.length>1 && data[0].rank){
                data.sort(function(a,b) {return (a.rank > b.rank) ? -1 : ((b.rank > a.rank) ? 1 : 0);} );
            }
            return data;
        }
        ,
        matcher:function(params, data) {
            // If there are no search terms, return all of the data
            if ($.trim(params.term) === '') {
              return data;
            }
    
            // Do not display the item if there is no 'text' property
            if (typeof data.text === 'undefined') {
              return null;
            }
    
            // `params.term` should be the term that is used for searching
            // `data.text` is the text that is displayed for the data object
            var idx = data.text.toLowerCase().indexOf(params.term.toLowerCase());
            if (idx > -1) {
              var modifiedData = $.extend({
                // `rank` is higher when match is more similar. If equal rank = 1
                  'rank':(params.term.length / data.text.length)+ (data.text.length-params.term.length-idx)/(3*data.text.length)
              }, data, true);
    
              // You can return modified objects from here
              // This includes matching the `children` how you want in nested data sets
              return modifiedData;
            }
    
            // Return `null` if the term should not be displayed
            return null;
        }
    

    })

提交回复
热议问题