【问题标题】:Typeahead shows not all items from jsonTypeahead 并非显示 json 中的所有项目
【发布时间】:2015-05-13 10:32:30
【问题描述】:

所以,我有工作 twitter typeahead.js 脚本,但注意到,有时(使用一些关键字)它显示的不是所有来自 json 的结果:

其中一种情况: 此接收到的 json 中的 3 个对象在哪里,但搜索表单仅返回第一个:

[
{
"query":"David Flanagan - JavaScript",
"id":"7",
"image":"\u003Cimg src=\u0022http:\/\/bks5.books.google.lt\/books\/content?id=4RChxt67lvwC\u0026printsec=frontcover\u0026img=1\u0026zoom=1\u0026edge=curl\u0026source=gbs_api\u0022\u003E"
},
{
"query":"Stoyan Stefanov - JavaScript Patterns",
"id":"10",
"image":"\u003Cimg src=\u0022http:\/\/bks8.books.google.lt\/books\/content?id=ZEmbAgAAQBAJ\u0026printsec=frontcover\u0026img=1\u0026zoom=1\u0026source=gbs_api\u0022\u003E"
},
{
"query":"Douglas Crockford - JavaScript: The Good Parts",
"id":"9",
"image":"\u003Cimg src=\u0022http:\/\/ecx.images-amazon.com\/images\/I\/518QVtPWA7L._SL160_.jpg\u0022\u003E"
}
]

搜索表单结果:

我的预输入脚本:

$( document ).ready(function() {
    var books = new Bloodhound({
        datumTokenizer: Bloodhound.tokenizers.obj.whitespace,
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        remote: {
            url: '/search/auto/?q=%QUERY',
            wildcard: '%QUERY',
        }
    });

    $('#books_search').typeahead({
            hint: true,
            highlight: true,
            minLength: 3,
            limit: 5
        },
        {
            name: 'book-search',
            display: 'query',
            source: books,
            templates: {
                empty: [
                    '<div class="empty-message">Unable to find any books that match the current query</div>'
                ]
            }
        }).on('typeahead:selected', function(e, data) {
            $("#search-form").submit();
        });
});

有什么想法可能是错的吗?

【问题讨论】:

  • 你试过使用这个 datumTokenizer:Bloodhound.tokenizers.obj.whitespace("query"),

标签: javascript json typeahead.js


【解决方案1】:

所以这是 typeahead.js 错误,这里是解决方案:(已提交,但尚未在 master 中):

https://github.com/twitter/typeahead.js/pull/1200

【讨论】:

    【解决方案2】:

    你试过用这个吗 datumTokenizer:Bloodhound.tokenizers.obj.whitespace("query"); (我使用本地数据而不是远程数据,但两者的工作方式相同) 这是运行良好的演示链接 http://jsfiddle.net/7q3xk10y/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多