我正在尝试让 Twitter Typeahead+Bloodhound 与 Google 的 CSE 一起工作。
到目前为止,我已经设法让结果返回,但我无法计算出 datumTokenizer。
var results = new Bloodhound({
datumTokenizer: function(data) {
return Bloodhound.tokenizers.whitespace(d.value)
},
queryTokenizer: Bloodhound.tokenizers.obj.whitespace,
remote: {
url: "http://clients1.google.com/complete/search?client=partner&hl=en&sugexp=gsnos%2Cn%3D13&gs_rn=25&gs_ri=partner&partnerid=004914516364918182382%3Ayfqw09r4qvu&types=t&ds=cse&cp=3&gs_id=15&q=%QUERY&callback=showResults&duffCallback=?",
ajax: $.ajax({type:'GET',dataType:'jsonp',jsonp:'duffCallback'}),
filter: showResults
}
});
见小提琴:http: //jsfiddle.net/thugsb/3KAjh/
你会看到我已经得到了从 showResults() 返回的结果作为一个数组。但是,从 中调用 showResults()filter:
似乎没有做任何事情,因为删除该行没有任何效果。所以我不太确定发生了什么。
请注意 duffCallback 是我通过阅读这个问题所做的。如果有更好的方法来完成这项工作,我会全力以赴!