Я пытаюсь заставить 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 — это то, что я придумал, прочитав этот вопрос. Если есть лучший способ сделать эту работу, я весь внимание!