twitter-typeahead:Bloodhound预取无法识别准备或转换功能?

时间:2018-01-31 20:50:58

标签: typeahead.js bloodhound

使用: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 :('); });

我在控制台中看不到任何消息,无论是在初始化期间(好,没有错误)还是在建议显示期间(不好,准备或变换未被调用)。有什么我想念的吗?

1 个答案:

答案 0 :(得分:0)

检查您的调试工具,看看是否实际上正在向' ./ suggestlist.json'如果成功的话。我有一个类似的问题,并意识到我的预取被缓存,所以从未调用准备和转换函数。尝试添加'缓存:false'到预取设置(如果需要,如果它开始工作则删除)。