如何使用RequireJS加载Typeahead/Bloodhound

发布于 2022-09-01 18:16:50 字数 1624 浏览 29 评论 0

项目是用 Marionette+RequireJS. 最近要使用TypeaheadJS(0.11.1) 但是始终无法加载Bloodhound。麻烦各位帮忙看看错在哪里?错误信息:“Cannot read property 'tokenizers' of undefined”

paths: {

'jquery'                : 'assets/lib/jquery.min',
'underscore'            : 'assets/lib/underscore-min',         
'backbone'              : 'assets/lib/backbone.min',
'marionette'            : 'assets/lib/backbone.marionette.min',
'bootstrap'             : 'assets/lib/bootstrap.min',
'typeahead'             : 'assets/lib/typeahead.bundle.min',       

},

shim: {

typeahead:{
    deps: ['jquery'],
    exports:'Bloodhound',
    init: function ($) {
        return require.s.contexts._.registry['typeahead.js'].factory( $                          );
    }
}

}

Marionette view code:

define(['jquery', 'marionette','templates', 'underscore','typeahead'],

function $,Marionette, templates, _,Bloodhound) {
          'use strict';
      ..................
    onShow:function(){
       var tours = new Bloodhound({
          datumTokenizer: function (datum) {
              return Bloodhound.tokenizers.whitespace(datum.value);
          },
          queryTokenizer: Bloodhound.tokenizers.whitespace,
          remote: {
              url: '/api/infos?t=ALL',
          }
      });

      // Initialize the Bloodhound suggestion engine
      tours.initialize();
      // Instantiate the Typeahead UI
      $('.typeahead').typeahead(null, {
          displayKey: 'value',
          source: tours.ttAdapter()
      });

},

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文