2016-04-21 69 views
1

我有一个使用Bootstrap,jQuery,Typeahead.js和Azure Search的应用程序。我正在尝试使用suggestions功能。在试图做到这一点,我有以下几点:通过Typeahead.js提供建议

var engine = new Bloodhound({ 
    datumTokenizer: Bloodhound.tokenizers.whitespace, 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    remote: { 
    url: 'https://my-app.search.windows.net/indexes/my-index/docs/suggest?api-version=2015-02-28', 
    prepare: function (settings) { 
     settings.type = 'POST'; 
     settings.contentType = 'application/json; charset=UTF-8'; 
     settings.data = { search: query, suggesterName: 'mySuggestions', top: 10 };               
     return settings; 
    } 
    } 
}); 

$('#searchField').typeahead([{ 
    minLength: 5, 
    name: 'suggestions', 
    source: engine 
}]); 

当我输入文本searchField,我从来没有看到请求发射了在提琴手Azure的搜索服务。同时,在控制台窗口中看不到任何错误。我究竟做错了什么?

回答

0

几件事情对我来说似乎对我来说。 首先这样的:

$('#searchField').typeahead([{ 
    minLength: 5, 
    name: 'suggestions', 
    source: engine 
}]); 

可能需要更多这样的:

$('.typeahead').typeahead(null,{ 
    minLength: 5, 
    source: engine 
}); 

另外在你的引擎功能的准备需要包括“查询” ARG。

var engine = new Bloodhound({ 
    datumTokenizer: Bloodhound.tokenizers.whitespace, 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    remote: { 
    url: 'https://my-app.search.windows.net/indexes/my-index/docs/suggest?api-version=2015-02-28', 
    prepare: function (query,settings) { 
     settings.type = 'POST'; 
     settings.contentType = 'application/json; charset=UTF-8'; 
     settings.data = { search: query, suggesterName: 'mySuggestions', top: 10 };               
     return settings; 
    } 
    } 
}); 

你可以看到一个工作小提琴here

+0

非常感谢您的帮助! – user687554