2015-01-04 62 views
1

我想使用twitter的typeahead實現搜索自動建議。此自動推薦應提供術語建議(術語)和產品建議(產品)。這兩個建議都可以遠程檢索。但是,似乎這種鍵入方法只能調用一個遠程URL。第二個是永遠不會被調用的。typeahead/bloodhound與多個遠程數據源

有沒有人有一個想法我做錯了什麼?這裏是我的代碼:

$(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

問題解決了:我要補充一個空的選擇對象到先頭方法:

$('#searchField').typeahead({}, 
    { 
    name: 'searchTerms', 
    source: termEngine.ttAdapter() 
    }, { 
    name: 'products', 
    source: productEngine.ttAdapter() 
}); 

這確保了兩個請求都被執行。