0

即使预取/本地数据中有值,远程调用也会触发。

示例代码:

var jsonObj = ["Toronto", "Montreal", "Calgary", "Ottawa", "Edmonton", "Peterborough"]; 

$('input.countries-cities').typeahead([
    {
        name: 'Canada',
        local: jsonObj,
        remote: {
            url: 'http://localhost/typeahead/ajaxcall.php?q=QUERY',
            cache: true
        },
        limit: 3,
        minLength: 1,
        header: '<h3>Canada</h3>'
    }
]);

我期望的是仅当本地没有匹配项时才触发远程调用。但是每次我输入位置时,都会触发远程调用。任何帮助将不胜感激。

4

2 回答 2

0

我知道这个问题已经有几个月了,但我遇到了类似的问题并找到了这个答案

问题是您limit的设置为 3 并且您的搜索结果少于您的限制,从而触发了远程调用。如果您将 your 设置limit为 1,则除非没有结果,否则您将不会收到远程呼叫。

IMO 的设计不是很好,因为如果有 3 个结果,您可能仍希望看到 3 个结果。更糟糕的是,假设您的本地/预取结果仅返回 1 个结果......如果您的远程返回相同的结果,它将在您的列表中重复。我还没有找到解决这个问题的方法。

于 2014-01-20T15:17:21.817 回答
0

在 Bloodhound.js 中替换

matches.length < this.limit ? cacheHit = ...

经过

matches.length < 1 ? cacheHit = ...
于 2015-01-30T10:49:51.537 回答