0
拼命試圖弄清楚爲什麼自動完成不JSON的對象使用JSON事先鍵入的內容警犬自動完成着工作對象
(function($){
let $country = $('#country');
let countries = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: '../../data/countries.json'
});
$country.typeahead({
name: 'countries',
hint: true,
highlight: true,
minLength: 1
},{
source: countries,
templates: {
empty: ['No data'].join('\n'),
suggestion: {
function (data) {
return '<ul><li>'+data.name+'</li></ul>';
}
}
}
});
}(jQuery));
一切都與類似json的工作[「物品1」,「ITEM2」,「項目3」] 但沒有[{「name」:「item1」},{「name」:「item2」},{「name」:「item3」}]
我的json是正確的,我甚至試圖使用這一個: http://twitter.github.io/typeahead.js/data/nba.json
當使用關聯數組時總是得到「無數據」。
也試過這樣:
prefetch: {
url: '../../data/countries.json',
filter: function(list) {
return $.map(list, function(item) {
return {
name: item.name,
code: item.code
};
});
}
}
數據預取是,但仍然沒有建議。
當然,在每次編輯之後,我都清理本地存儲。
使用把手
name: 'countries',
source: countries,
display: 'name',
templates: {
empty: ['No data'].join('\n'),
suggestion: Handlebars.compile('<p><strong>{{name}}</strong></p>')
}
這可能不是一個完整的解釋。如果返回的JSON是一個字符串數組,它對於引擎來說非常簡單。否則Bloodhound建議引擎應該知道datumTokenizer,以便根據用戶查詢知道要建議的內容。在你的情況下,返回的JSON是一個對象數組。因此,搜索可以基於名稱或代碼。你在你的datumTokenizer中提供這些信息,以便相應地匹配建議。 – Surya