Twitter Typeahead.js Bloodhound 远程返回 undefined。

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()
});
1个回答

5
血猎建议引擎无法在您的JSON数组中找到显示键“value”。
您需要将JSON数组转换为JavaScript对象数组。JavaScript对象具有一个名为“value”的变量,其值为电影标题;正是这个“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。


感谢Ben的帮助。答案已被接受。再次感谢! - alyus
很高兴我能帮到你,@jfrosty :) - Ben Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接