即使预取/本地数据中存在值,远程调用也会触发。
示例代码:
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>'
}
]);
我期望的是只有在本地没有匹配的情况下才会触发远程呼叫。但每次我输入位置时,远程呼叫都会被触发。任何帮助将受到高度赞赏。
答案 0 :(得分:0)
我知道这个问题已经有几个月了,但我遇到了类似的问题并发现了this answer。
问题是您的limit
设置为3,并且您的搜索结果的结果少于您的限制,从而触发远程调用。如果您将limit
设置为1,除非没有结果,否则您将无法接听远程呼叫。
不是一个伟大的设计IMO,因为如果有3个结果你可能仍然希望看到3个结果。更糟糕的是,说你的本地/预取结果只返回1个结果...如果你的遥控器返回相同的结果,它将在你的列表中重复。我还没有找到解决这个问题的方法。
答案 1 :(得分:0)
在bloodhound.js中替换
matches.length < this.limit ? cacheHit = ...
通过
matches.length < 1 ? cacheHit = ...