我遵循了他们的tutorial,但是即使页面第一次被加载并且搜索框的内容为空,它也始终显示搜索结果的页面。我尝试添加queryHook
并仅在该术语不为空白时进行搜索,但是在加载页面时它仍显示搜索结果。实际上,queryHook
甚至在第一次加载时都没有被调用。仅当您在搜索框中键入时才调用它。 除非用户开始输入文字,否则如何隐藏搜索结果?
https://community.algolia.com/instantsearch.js/v2/widgets/searchBox.html#usage
这有效,但是我认为这不是正确的方法,因为它仍然在空文本框中进行搜索。同样,当您通过单击右侧的X
重设搜索词时,它也不会隐藏结果(因为它不会调用queryHook
)。
<main id="results" class="collapse">
<div id="hits"></div>
<div id="pagination"></div>
</main>
# CoffeeScript
search.addWidget(
instantsearch.widgets.searchBox({
container: '#search-input',
queryHook: (term, searchFunction) ->
console.log "term = #{term}"
if term
$('#results').show()
else
$('#results').hide()
searchFunction(term)
答案 0 :(得分:2)
您可以使用Helper.js library,它已经是InstantSearch的一部分。在您的情况下,请在实例化搜索时检查查询长度:
var search = instantsearch({
// other search parameters
searchFunction: function(helper) {
if (helper.state.query.length === 0) {
return; // do not trigger search
}
helper.search(); // trigger search
}
});