我在版本0.11.1中使用Twitter Typeahead。現在我試圖正確地遠程工作,但不知何故,我覺得我正在變得奇怪的行爲。Twitter Typeahead遠程沒有完成一些查詢
這是工作的代碼與本地陣列:
var localArray = [{"value":"test0"},{"value":"test1"},{"value":"test2"},{"value":"test3"},{"value":"test4"}];
var myds = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
local: localArray
});
$(function() {
$("#my-input").typeahead({},
{
name: 'ds1',
source: myds,
display: 'value'
});
});
現在,我嘗試建立遠程數據。我所做的只是將本地更改爲遠程,並提供URL並添加查詢參數。它將提供與localArray完全相同的結構和數據(它目前忽略查詢並總是提供localArray的內容來測試它)。我在Chrome開發者工具檢查實際執行查詢並返回localArray的內容:
var myds = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/autocomplete?query=%QUERY',
wildcard: '%QUERY'
}
});
$(function() {
$("#my-input").typeahead({},
{
name: 'ds1',
source: myds,
display: 'value'
});
});
不知怎的,爲test
搜索時,這是行不通的。當搜索tes
時,我仍然得到結果,但是當我搜索test
時,沒有提供自動完成結果。還有其他一些詞不適用,它似乎遵循相同的模式,就像找不到完整的單詞而找不到單詞的一部分。任何想法是什麼導致這種行爲或如何解決它?
我的猜測是遠程數據源必須是另一種格式,但我找不到它的外觀。在打開頁面上的所有示例看起來非常相似...
您的遠程數據格式是什麼? –
它是普通的json:''[{「value」:「test0」},{「value」:「test1」},{「value」:「test2」},{「value」:「test3」},{ 「value」:「test4」}]'' – Tim
我想看看您是否遇到了typeahead的已知錯誤。你可以在你的鍵入設置中添加一個「limit:2」,看看其他搜索是否開始工作(當然只返回2個結果)? –