考えられるすべての設定(たとえば.clear()
と.typeahead('destroy')
)で遊んだことがあります。ソースをリモートとして設定してしまえば先読みをローカルソースにする。Typeahead.js/Bloodhound.jsを使用してリモートソースとローカルソースを切り替える
どのような考えですか?ここで
は、以下のコードは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>';
}
}
});
};
質問が間違っています。リモートソースではなく、リモートからローカルに切り替える。リモートまたはローカルのどちらかを使用しない理由があればどちらの関数でもデータを返す関数を扱うことができます。 – whipdancer
私は複数の先読みを持っています。 –
これ以上展開できますか? bloodhoundを使う必要がありますか?仮引数のソースを関数として定義するだけであれば、その関数を介してどのようなデータ(ローカルjson、ajax呼び出しなど)を取得することもできます。 – whipdancer