如何让Twitter Typeahead 0.10和Bloodhound在require / backbone(1.1.2)-setup中一起工作

时间:2014-04-02 14:20:22

标签: twitter-bootstrap backbone.js requirejs typeahead.js bloodhound

有什么工作示例可以找到吗? Typeahead运行良好,但是当我尝试将Bloodhound连接到它时,我总是得到错误

  

未捕获的TypeError:无法读取未定义的属性“tokenizers”

在我的Backbone-main.js中我定义了一个

path: {..., 

        typeahead: 'libs/typeahead.jquery.min',
        bloodhound: 'libs/bloodhound.min',
}

shim: { ..., 
            'typeahead': {
                'deps': ['jquery'],
                'exports': 'jquery' // Make sure the noconflict configuration of jquery doesn't break this extension
            },
            'bloodhound':{
                'deps': ['jquery'],
                'exports': 'jquery' // Make sure the noconflict configuration of jquery doesn't break this extension
            },

}

在我的Backbone.view中定义

define(['backbone', 'typeahead', 'bloodhound', '../models/searchableDocument', '../collections/searchableDocuments', 'text!./asset_footer.html'],
function(Backbone, Typeahead, Bloodhound, SearchableDocument, SearchableDocuments, footerTmpl) { ...

//.../initialize/...
var docHound = new Bloodhound({
                name: 'documents',
                local: this.allDocuments.toJSON(),
                datumTokenizer: function(doc) { return Bloodhound.tokenizers.whitespace(doc.name); },
                queryTokenizer: Bloodhound.tokenizers.whitespace

            });
            docHound.initialize();
...

我还在我的系统结构中包含了Bootstrap(2.3.2),所以我也尝试使用

解决可能的冲突
...
var DocHound = Bloodhound.noConflict();
            var docHound = new DocHound({
...

但这只会引发错误

  

未捕获的TypeError:无法调用未定义的方法'noConflict'

所以它看起来更像是我没有“达到”Bloodhound-Clas ...... 任何提示?日Thnx!

1 个答案:

答案 0 :(得分:1)

有同样的问题,只需要将Bloodhound添加为导出。

    "bloodhound": {
        deps: ["jquery"],
        exports: "Bloodhound"
    }

HTH!