Twitter Typeahead Ajax结果未全部显示

10

我正在使用 Twitter 的 typeahead 插件(typeahead.js 0.11.1 版),结合 ajax 调用,虽然可以正常工作,但当 ajax 返回结果少于限制时(默认限制为 5,我在 typeahead 调用中没有指定),会出现一些奇怪的行为。这是我的设置方式:

var limit = 6;

populate_typeahead = function() {
    $('.typeahead').typeahead('destroy');
    $('.typeahead').typeahead({
      hint: true,
      highlight: true,
      minLength: 1
    },
    {
      source: ajaxquery,
    });
};

var ajaxquery = function(query, syncresults, process) {
        return $.ajax({
            url: $(this)[0].$el.closest('span.twitter-typeahead').find('input:last').data('mahiFindByPath'),
            type: 'get',
            data: {search_string: query, limit: limit},
            dataType: 'json',
            success: function(json) {
                return typeof json.options == 'undefined' ? false : process(json.options);
            }
        });
    };

我遇到的问题是在输入框中输入"new to",会返回以下json.options:

[
    'new to add to g1',
    'new to be in grp1 then remove from grp',
    'new to drag',
    'new to assign'
]

但是唯一的建议是“添加到g1”,当全部4个都应该显示。如果我继续输入“new to d”,那么“new to drag”的建议就会出现。如果我只输入“new”,那么我会得到5个完整的建议,包括以上大部分内容!

如果我更改var limit = 5;,那么ajax调用最多只返回5个结果,而且在我输入“new to d”之前根本不会显示建议列表,也就是说“new”不提供建议。这使我想到与typeahead限制相关的ajax结果数量问题。为了测试我的理论,我向json.options数组中添加了5个无意义的项目,以便始终有超过5个结果,并且一切正常 - 只是我不想总是在列表底部拥有无意义的建议。非常感谢任何建议!

2个回答

26

嗨。我认为我正在经历Typeahead 0.11.1版本的相同问题。并非所有从ajax调用返回的结果都显示在建议列表中。您提供的链接似乎不再起作用。您能指引我去哪里找到解决此问题的方法吗?谢谢。 - Doug
抱歉,看起来 Github 在几分钟内出现了故障。现在已经修复好了,而且它可以正常工作!你真是太棒了。非常感谢。 - Doug

0
根据agustaf的建议,我正在使用twitter-typeahead-rails gem。我创建了一个分支并将版本升级到1.0.1,这为我修复了此错误,可能是相同或相关的错误。
在我的情况下,我从远程源获得了两个结果,但只有其中一个用于建议。
我发起了一个pull request-但不确定它是否会被合并。但是,对于未来可能看到此问题的rails用户,请使用我的分支,特别是我指定的分支。
添加到您的gemfile中。
gem 'twitter-typeahead-rails', :git => "git://github.com/pitops/twitter-typeahead-rails.git" , :branch => "bump_version_to_1.0.1"

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