我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不是函数
答案 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