Javascript Typeahead始终最多只显示5条建议

Javascript Typeahead始终最多只显示5条建议,javascript,jquery,limit,typeahead.js,twitter-typeahead,Javascript,Jquery,Limit,Typeahead.js,Twitter Typeahead,我有下面的代码使用Typeahead.js提供建议。我没有关于代码的主要问题,因为它工作得很好 我面临的一个小问题是,在任何给定的时间,我只看到5条建议,即使远程URL中有5条以上的建议 var isearch = new Bloodhound({ datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.value); }, queryTokenizer: Blo

我有下面的代码使用Typeahead.js提供建议。我没有关于代码的主要问题,因为它工作得很好

我面临的一个小问题是,在任何给定的时间,我只看到5条建议,即使远程URL中有5条以上的建议

var isearch = new Bloodhound({
    datumTokenizer: function(d) { 
         return Bloodhound.tokenizers.whitespace(d.value); 
    },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: "http://localhost/search/get-data/%QUERY"
});

isearch.initialize();  

$("#search_box .typeahead").typeahead(null,{ name: "isearch",
    displayKey: "value",
    source: isearch.ttAdapter(),
    templates: {
         suggestion: Handlebars.compile("{{value}}")
    }
});

我希望有更多的建议,应该有一个滚动条供用户查看。

在Typeahead版本0.11.1中:

在typeahead对象实例化期间指定“limit”,以设置要显示的建议数量,例如

// Instantiate the Typeahead UI
$('.typeahead').typeahead(null, {
 limit: 10, // This controls the number of suggestions displayed
 displayKey: 'value',
 source: movies
});
请参见此处的工作示例:


在Typeahead版本0.10.4中

猎犬建议引擎的“限制”选项的默认值为5(即)

当您实例化您的猎犬对象时,您可以通过指定所需的值来增加限制。例如,要指定10的限制,请执行以下操作:

var isearch = new Bloodhound({
 datumTokenizer: function(d) { 
     return Bloodhound.tokenizers.whitespace(d.value); 
 },
 queryTokenizer: Bloodhound.tokenizers.whitespace,
 remote: "http://localhost/search/get-data/%QUERY",
 limit: 10
});
此处可以找到限制设置为10的Typeahead实例的示例:


除了像@Fresh建议的那样增加对侦探犬实例化的限制外,我还使用CSS进行了以下样式设计,以获得所需的结果

.tt-suggestions {
  min-height: 300px;
  max-height: 400px;  
  overflow-y: auto;
}

我所做的是将容器强制为400px,以便在有更多结果时获得一个滚动条。我希望采用这种方法,因为我不希望屏幕占据更多区域。即使有100个结果,这也会起作用。。并且不会阻塞屏幕。

在我的例子中,“限制”选项起作用,但方式不同。我不得不在typeahead上设置限制选项,而不是Hound。我正在发布我的案例,以便它可以帮助某人

bloodhoundSuggestionEngine = new Bloodhound({
datumTokenizer : function(d) {
return Bloodhound.tokenizers.whitespace(d.key);
},
queryTokenizer : Bloodhound.tokenizers.whitespace,
local : myOptions
});

$("#myinputbox").typeahead({
minLength : 3,
highlight : true
}, {
displayKey : 'key',
source : bloodhoundSuggestionEngine.ttAdapter(),
limit: 10
});

@阿图尔的回答肯定对我有帮助,但我和猎犬还有另一个相关的问题。我使用的是遥控器,我不会得到我知道遥控器会起作用的结果。这是因为它在猎犬的缓存中找到了足够近的东西,没有向遥控器索要数据。因此,通过将“猎犬”上的
fulfund
选项从默认值猛增到100,它总是要求遥控器提供更多数据

另一种方法可能是直接更改Typeahead类中的默认值

$.fn.typeahead.defaults={
...
项目:8,
…}


项:在Typeahead版本0.11.1中的“全部”:

在typeahead对象的实例化过程中指定“limit”,以设置要显示的建议数量,但确保它比源返回的最大数量少一个

// Instantiate the Typeahead UI
$('.typeahead').typeahead(null, {
    limit: 9, // one less than your return value. This controls the number of suggestions displayed
    displayKey: 'value',
    source: movies
});

请参见

谢谢您的链接。我已经看过了。我想要的是有一个滚动条时,有更多的项目。总限制=10,显示=5项。对于剩下的项目,我们应该使用滚动条。typeahead无法实现您所期望的。我的回答将允许您增加计数,这是您目前实现此目标的唯一方法。好的,很高兴您找到了解决方案。您应该回答自己的问题,以帮助其他有相同问题的人。@CJRamki您可以获得远程数据集的大小,然后在实例化“猎犬”时使用此值。但是,您为什么要这样做,因为返回所有数据会降低页面速度,因为您需要检索所有数据?版本0.11.1-
limit
不是侦探犬的选项<代码>足够
是一个选项,但这是用于触发
远程
以回填建议的。如果您使用的是猎犬+TT,那么在TT'dataset`选项中使用
limit
来控制建议IIRC,因为0.11的猎犬,limit作为一个选项被删除。我认为这只是Typeahead上的一个选项似乎他们一直在更改它,对于第一个空值,是为我做的。谢谢