我正在使用Typeahead.js/Bloodhound在我的网站上实施打字建议功能,但我无法使用Bloodhound工作。这是代码:
var indicator_commands = new Bloodhound({
datumTokenizer: function(d) {
return Bloodhound.tokenizers.whitespace(d.defaultInput);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: '/static/indicator.json',
});
console.log (indicator_commands.index.serialize());
indicator_commands.initialize();
console.log (indicator_commands.index.serialize());
这是indicator.json的一部分:
[
{ "name": "sma",
"fullname": "Smooth Moving Average",
"parameter": "sma,period,applied_to_optional,#color_optional;",
"defaultInput": "sma,14,close,#ababab;",
"tokens" : ["sma,14,close,#ababab;"],
"short_help": "",
"long_help": "",
},
{ "name": "ema",
"fullname": "Exponential Moving Average",
"parameter": "ema,period,applied_to_optional,#color_optional;",
"defaultInput": "ema,14,close,#ababab;",
"tokens" : ["ema,14,close,#ababab;"],
"short_help": "",
"long_help": "",
}
]
我期待indicator_commands
中的一些数据,但它没有显示。我需要做些什么才能让它发挥作用?
答案 0 :(得分:0)
您的JSON无效。
在对象的最小成员之后有一个逗号,即。 "long_help" : "",
这是弄乱了bloodhoubd,你必须删除它。
您还应该注意indicator_commands.initialize();
将返回
根据猎犬文档的Promise
,所以你无法保证在第二次拨打serialize()
时它已经被初始化了。虽然修复的JSON代码对我有用,但您应该使用Promise
:
indicator_commands.initialize().then(function(b) {
console.log('Success');
console.log(indicator_commands.index.serialize());
},
function(e) { console.log('Error'); } );