4

无法让远程版本的 Twitter Typeahead.js 正常工作。我的建议“未定义”。任何帮助,将不胜感激。

下面的代码:

JS:

var films = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: '../widgets/films.json'
});

films.initialize();

$('#films .typeahead').typeahead(null, {
    name: 'films',
    displayKey: 'value',
    source: films.ttAdapter()
});
4

1 回答 1

5

Bloodhound 建议引擎无法在您的 JSON 数组中找到显示键“值”。

您需要将 JSON 数组转换为 JavaScript 对象数组。JavaScript 对象有一个名为“value”的变量,它的值是电影标题;显示键使用的是这个“值”变量,例如

remote: {
        url: '../widgets/films.json',
        filter: function (films) {
            // $.map converts the JSON array into a JavaScript array
            return $.map(films.results, function (film) {
                return {
                    // NB : replace original_title below with your JSON film key
                    value: film.original_title
                };
            });
        }
    }

如果您包含您的films.json 输出样本(因为我将能够使用您需要的确切值),则可以改进上面的示例。

有关扩展示例和 jsfiddle,请参阅此答案。

于 2014-09-23T20:08:15.593 回答