【发布时间】:2016-03-30 02:56:20
【问题描述】:
我尝试了所有我能想到的设置,例如.clear() 和.typeahead('destroy'),一旦我将源设置为远程,我就无法让预输入使用本地源。
有什么想法吗?
下面的代码被称为onclick:
var create_typeahead = function(is_remote, titles){
filters_typeahead.typeahead('destroy');
if(is_remote){
var remote_url = titles;
var titles = new Bloodhound({
queryTokenizer: Bloodhound.tokenizers.whitespace,
datumTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: remote_url,
q=%QUERY',
wildcard: '%QUERY'
}
});
}
else{
var titles0 = titles;
var titles = new Bloodhound({
queryTokenizer: Bloodhound.tokenizers.whitespace,
datumTokenizer: Bloodhound.tokenizers.whitespace,
local: titles0
});
}
titles.initialize();
filters_typeahead.typeahead({
highlight: true,
minLength: 2,
},
{
name: 'titles',
displayKey: 'name',
source: titles,
templates: {
suggestion: function(data) {
return '<div>' + data.name + '</div>';
}
}
});
};
【问题讨论】:
-
我看错了你的问题。从远程切换到本地,而不是远程源。如果有任何理由你不只是使用远程或本地?任何一个都可以处理返回数据的函数。
-
我有多个要在多个预输入之间切换。
-
你能扩展一下吗?你需要使用猎犬吗?如果您可以简单地将预先输入的源定义为一个函数,那么您可以通过该函数处理获取任何数据(本地 json、ajax 调用等)。
-
谢谢,我可能会摆脱猎犬。我知道它被称为建议引擎,但通过谷歌搜索,我无法理解它的作用,除了惹恼每个人的废话。我希望同一个输入框来处理不同的数据源,一些是本地的,一些是远程的,具体取决于用户的预过滤。
-
即使您保留 Bloodhound(它比预输入更可靠地清除和初始化),您也可以使用
local使用将数据返回到本地的函数。如果你用遥控器,那就不一样了。您可以更改 url 和参数,但您始终必须从 url 获取数据。
标签: javascript jquery autocomplete typeahead.js bloodhound