使用:typeahead.js 0.11.1(typeaheadbundle.js)
我正在尝试使用bloodhound预取多个结果组并根据结果组选择返回它们。如果没有分组(只提供URL),代码就可以完美运行。当我尝试通过使用prepare进行预取来添加分组时,不会调用prepare函数。
有效的代码(仅限URL预取):
var suggestionUniverse = new Bloodhound({
initialize: false,
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('Value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch:'./suggestlist.json'
});
var promise = suggestionUniverse.initialize(true);//initialize and clear any existing cache.
promise.fail(function () { console.log('err, something went wrong :('); });
不起作用的代码(预备并准备):
var suggestionUniverse= new Bloodhound({
initialize: false,
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('Value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch:{
url: './suggestlist.json',
prepare: function (settings) {
console.log("Called prepare");
return settings; //Optional: Add filter for batchid?
},
transform: function(response) {
console.log("Called transform");
return response;//add batch filters needed to reduce response.
}
}
});
var promise = suggestionUniverse.initialize(true);//initialize and clear any existing cache.
promise.fail(function () { console.log('err, something went wrong :('); });
我在控制台中看不到任何消息,无论是在初始化期间(好,没有错误)还是在建议显示期间(不好,准备或变换未被调用)。有什么我想念的吗?
答案 0 :(得分:0)
检查您的调试工具,看看是否实际上正在向' ./ suggestlist.json'如果成功的话。我有一个类似的问题,并意识到我的预取被缓存,所以从未调用准备和转换函数。尝试添加'缓存:false'到预取设置(如果需要,如果它开始工作则删除)。