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

时间:2015-05-21 14:59:20

标签: javascript typeahead.js bloodhound

typeahead.js Bloodhound使用@Scripts.Render(Links.Scripts.typeahead_bundle_js) @Styles.Render(Links.Content.typeahead_min_css) <input id="myInput" type="text" class="form-control" /> $(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 }); }); 发送,但我收到了javascript错误。我错过了什么?

HTML :( .net razor view)

typeahead.bundle.js

JS:

 gulp.src('./files/*.swig')
   .pipe(rename({
     suffix: '.html'
   }))
   .pipe(notify({
     onLast: true,
     message: 'Templates rendered' 
   }));

在{{1}}:

中给出错误
  

this.source不是函数

2 个答案:

答案 0 :(得分:14)

这个给了我一个艰难的时间,因为和你一样,我正在做的所有内容都在示例中......我花了一些时间来检查我使用的lib的确切版本并进行比较它是示例中的那个。我使用的是打包在&#39; twitter-typeahead-rails&#39;中的typeahead.js 0.10.5。 gem,在examples中使用的版本是typeahead.js 0.11.1。

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

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

  

...此版本中有许多API更改,所以不要期待   向后兼容以前的版本。还有很多   已经引入的新的未记录的功能。文档   这些功能将在v1发布之前添加。 ...

答案 1 :(得分:2)

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