如何使用 Semantic UI 的本地搜索对搜索结果重新排序?
How do I reorder search results with Semantic UI's local search?
我有一个使用 Semantic 2.1 和哈希数组的本地搜索框。
[{ title: 'Andorra' , rank: 1 } , { title: 'United Arab Emirates', rank: 2 } , { title: 'Afghanistan' , rank: 3 } , { title: 'Antigua' , rank: 4 } ,...]
我希望搜索结果按照数组中散列的顺序排列。
例如,使用搜索字符串 Ar
搜索国家/地区,现在我得到
Armenia
Argentina
Aruba
Andorra
United Arab Emirates
American Samoa
Austria
但是我想显示
United Arab Emirates
Armenia
Argentina
...
有没有办法在不重写源代码的情况下做到这一点?
这是演示 fiddle 我设置:http://jsfiddle.net/zestly/ckxpvgm7/1/
作为奖励问题,谁能解释为什么美属萨摩亚被归还?
我知道的唯一方法是使用类似这样的方法覆盖 HTML 创建搜索功能的结果:
$.fn.search.settings.templates = {
standard: function(response) {
// Your own sorting logic here
var sortedResults = response.results.sort(function(a, b) {
if (a.title === 'United Arab Emirates' || b.title === 'United Arab Emirates')
return 1;
else if (a.rank > b.rank)
return 1;
else if (a.rank < b.rank)
return -1;
else
return 0;
});
// Create the DOM as as it normally should be
return $.map(sortedResults, function(item) {
return $('<div>').append($('<a>').addClass('result').append(
$('<div>').addClass('content').append(
$('<div>').addClass('title').text(item.title)
)
)).html();
});
}
};
这是在将结果数组绘制到结果容器之前您最后一次访问结果数组。您可以使用您自己的排序逻辑重新排列它,然后建立一个结果 DOM 匹配通常返回的结果。
我有一个使用 Semantic 2.1 和哈希数组的本地搜索框。
[{ title: 'Andorra' , rank: 1 } , { title: 'United Arab Emirates', rank: 2 } , { title: 'Afghanistan' , rank: 3 } , { title: 'Antigua' , rank: 4 } ,...]
我希望搜索结果按照数组中散列的顺序排列。
例如,使用搜索字符串 Ar
搜索国家/地区,现在我得到
Armenia
Argentina
Aruba
Andorra
United Arab Emirates
American Samoa
Austria
但是我想显示
United Arab Emirates
Armenia
Argentina
...
有没有办法在不重写源代码的情况下做到这一点?
这是演示 fiddle 我设置:http://jsfiddle.net/zestly/ckxpvgm7/1/
作为奖励问题,谁能解释为什么美属萨摩亚被归还?
我知道的唯一方法是使用类似这样的方法覆盖 HTML 创建搜索功能的结果:
$.fn.search.settings.templates = {
standard: function(response) {
// Your own sorting logic here
var sortedResults = response.results.sort(function(a, b) {
if (a.title === 'United Arab Emirates' || b.title === 'United Arab Emirates')
return 1;
else if (a.rank > b.rank)
return 1;
else if (a.rank < b.rank)
return -1;
else
return 0;
});
// Create the DOM as as it normally should be
return $.map(sortedResults, function(item) {
return $('<div>').append($('<a>').addClass('result').append(
$('<div>').addClass('content').append(
$('<div>').addClass('title').text(item.title)
)
)).html();
});
}
};
这是在将结果数组绘制到结果容器之前您最后一次访问结果数组。您可以使用您自己的排序逻辑重新排列它,然后建立一个结果 DOM 匹配通常返回的结果。