Javascript 将Brandhound remote filter设置为从筛选器中进行ajax调用的结果
我正在使用猎犬的Javascript 将Brandhound remote filter设置为从筛选器中进行ajax调用的结果,javascript,jquery,ajax,typeahead.js,bloodhound,Javascript,Jquery,Ajax,Typeahead.js,Bloodhound,我正在使用猎犬的remote选项为Typeahead.js 0.10.2中的Typeahead自动完成提供建议。当我使用remote的url选项发出一个ajax请求时,一切都正常工作 我可以使用filter选项来操作建议,并且Typeahead正在正确填充 但是,我需要猎犬实例(1)通过remote发出ajax请求,然后(2)发出各种后续ajax请求,以收集有关响应的更多信息,并在向用户显示之前进一步调整值 Remote的ajax请求根据用户键入的内容在tmdb中搜索电视节目,我随后的ajax请
remote
选项为Typeahead.js 0.10.2中的Typeahead自动完成提供建议。当我使用remote的url
选项发出一个ajax请求时,一切都正常工作
我可以使用filter
选项来操作建议,并且Typeahead正在正确填充
但是,我需要猎犬实例(1)通过remote
发出ajax请求,然后(2)发出各种后续ajax请求,以收集有关响应的更多信息,并在向用户显示之前进一步调整值
Remote的ajax请求根据用户键入的内容在tmdb中搜索电视节目,我随后的ajax请求将收集有关每个电视节目结果的更多信息,以便我可以向用户提供更好的自动完成建议
我的过滤器函数当前会发出这些后续ajax请求,适当地调整建议,并构建一个对象数组
问题是如何让过滤函数将该数组返回给猎犬。目前,我已经尝试使用defereds
和setTimeout
函数(毫无疑问,这是不专业的),但我得到的自动完成建议都是“未定义的”
我已经进行了广泛的搜索,我知道您不能简单地返回ajax请求的结果,因为返回通常发生在请求完成之前
我知道的通常解决方案是将ajax响应提供给回调,但我看不出回调如何帮助我按照侦探犬的要求从过滤器函数返回数组
我正在使用jQuery和Coffeescript,但下面是我使用jQuery和Javascript的代码框架。提前感谢您的指导
var tvTitles = new Bloodhound({
datumTokenizer: function(d) {
return Bloodhound.tokenizers.whitespace(d.value);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: // working url that queries tmdb,
filter: function(shows) {
var requests = function() {...}; // function that builds and returns ajax requests
$.when.apply($, requests).done(function(){
// build array of objects for bloodhound
)};
// how to make filter return the array to bloodhound?
}
}
});
// initialize tvTitles
// call typeahead with tvTitles.ttAdapter() as source
你找到解决办法了吗?