typeahead不会列出具有远程选项的匹配字符串

时间:2013-07-04 06:56:51

标签: twitter-bootstrap typeahead.js

我正在使用twitter的typeahead.js。当我使用remote来获取json时,它会显示json的前5个字符串,而不管我在文本框中输入的字符。

这是配置

$("#search").typeahead({
    name: 'categories',
    cache: false,
    remote: 'http://localhost:3000/api/v1/charts/sales/categories?chart_token=atoken',
    valueKey: 'name'
});

上面的url在json

之后返回
[{"id":"22","name":"PC"},{"id":"185","name":"XBOX 360"},{"id":"31","name":"Keräilykortti"},{"id":"34","name":"Manga + Kirjat"},{"id":"3","name":"DVD-elokuvat"},{"id":"202","name":"Wii"},{"id":"552","name":"Wii U"},{"id":"431","name":"Laitteet"},{"id":"535","name":"Nintendo 3DS"},{"id":"167","name":"Nintendo DS"},{"id":"206","name":"PlayStation 3"},{"id":"172","name":"PSP"},{"id":"26","name":"PlayStation 2"},{"id":"532","name":"PS Vita"},{"id":"25","name":"Xbox"},{"id":"241","name":"BLU-RAY-elokuvat"},{"id":"178","name":"Erikoistuotteet"},{"id":"30","name":"Games Workshop"},{"id":"328","name":"Flames of War"},{"id":"513","name":"Muut miniatyyripelit"},{"id":"32","name":"Roolipelit"},{"id":"33","name":"Lautapelit"}]

如果我将local与json而不是remote一起使用,则效果非常好。

知道我在这里缺少什么吗?

1 个答案:

答案 0 :(得分:1)

通过指定prefetch而不是remote来解决问题。所以下面的配置工作

$("#search").typeahead({
    name: 'categories',
    cache: false,
    prefetch: 'http://localhost:3000/api/v1/charts/sales/categories?chart_token=atoken',
    valueKey: 'name'
});

prefetch - 预取数据并将其存储在localStorage

remote - 当预取数据不足时,typeahead使用此来源获取更多数据以获取建议