我想使用twitter的typeahead来实现搜索自动提示。此autosuggest应提供术语建议(条款)和产品建议(产品)。这两个建议都可以远程检索。但是,似乎typeahead方法只调用一个远程URL。第二个从未被调用过。
有谁知道我做错了什么?这是我的代码:
$(document).ready(function () {
var termEngine = new Bloodhound({
name: 'searchTerms',
remote: "/index.php?terms=true&g=%QUERY",
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
cache: false
});
var productEngine = new Bloodhound({
name: 'products',
remote: "/index.php?products=true&g=%QUERY",
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
cache: false
});
termEngine.initialize();
productEngine.initialize();
$('#searchField').typeahead(
{
name: 'searchTerms',
source: termEngine.ttAdapter()
}, {
name: 'products',
source: productEngine.ttAdapter()
});
}
我还添加了一个带有相同问题的jsfiddle链接(尽管是一个不同的远程数据源):http://jsfiddle.net/r4cnares/1/
答案 0 :(得分:0)
问题解决了:我必须在typeahead方法中添加一个空选项对象:
$('#searchField').typeahead({},
{
name: 'searchTerms',
source: termEngine.ttAdapter()
}, {
name: 'products',
source: productEngine.ttAdapter()
});
这可以确保两个请求都被执行。