使用Bloodhound-this.source的Typeahead js不是一个函数

DLe*_*Leh 11 javascript typeahead.js bloodhound

我下面这个例子typeahead.js使用Bloodhound的T,但我得到一个JavaScript错误.我错过了什么?

HTML :( .net razor view)

@Scripts.Render(Links.Scripts.typeahead_bundle_js) 
@Styles.Render(Links.Content.typeahead_min_css)
<input id="myInput" type="text" class="form-control" />
Run Code Online (Sandbox Code Playgroud)

JS:

$(function () {
    var data = ["abce", "abcd", 'def', 'abcdef'];
    var bh = new Bloodhound({
        local: data,
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        datumTokenizer: Bloodhound.tokenizers.whitespace
    });
    //bh.initialize(); //this wasn't in the example, adding it had no effect

    $('#myInput').typeahead({
        highlight:true
    },
    {
        name: "testData",
        source: bh
    });
});
Run Code Online (Sandbox Code Playgroud)

给出错误typeahead.bundle.js:

this.source不是一个函数

bos*_*vic 14

这个给了我一个艰难的时间,因为和你一样,我正在做的所有内容都在示例中......我花了一些时间检查我使用的lib的确切版本并将其与示例中的一个.我使用打包在'twitter-typeahead-rails'宝石中的typeahead.js 0.10.5 ,在示例中使用的版本是typeahead.js 0.11.1.

一旦我切换版本,一切都开始正常工作.甚至没有必要将字符串数组重新映射到对象数组或在源上调用ttAdapter.您的代码可能会以您发布的方式工作...


引用来自twitter- typeahead changelog的版本0.11..0:

...此版本中有大量API更改,因此不要指望与以前版本向后兼容.还引入了许多新的未记录的功能.这些功能的文档将在v1发布之前添加....


gli*_*ark 2

你必须使用source: bh.ttAdapter()而不是source: bh