我在JS中使用了这个代码非常好。
var values = new Bloodhound({
datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.num); },
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: '/url/that/returns/json'
});
但是,由于我只需要这一次,我将其更改为预取,如下所示:
var values = new Bloodhound({
datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.num); },
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {url: '/url/that/returns/json'}
});
这会在typeahead.js中导致错误(“TypeError:a is undefined”)。我需要更改什么才能使此功能正常工作?
编辑:如果我在浏览器中访问URL,则返回的json是:
[{ “名称”: “MYNAME”, “ID”: “100”, “代码”: “CODE”}]
答案 0 :(得分:2)
这是因为我的datumTokenizer正在寻找名为num:
的字段... return Bloodhound.tokenizers.whitespace(d.num)
但我的JSON中没有这样的字段。我不知道为什么这对远程工作,但它在预取中不起作用。然后修复了用d.name。
替换d.num