当 Algolia 中的搜索词为空时,如何防止显示搜索结果?
How do you prevent search results from showing when the search term is empty in Algolia?
我关注了他们的 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)
您可以使用已经包含在 InstantSearch 中的 Helper.js library。在您的情况下,在实例化搜索时检查查询长度:
var search = instantsearch({
// other search parameters
searchFunction: function(helper) {
if (helper.state.query.length === 0) {
return; // do not trigger search
}
helper.search(); // trigger search
}
});
我关注了他们的 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)
您可以使用已经包含在 InstantSearch 中的 Helper.js library。在您的情况下,在实例化搜索时检查查询长度:
var search = instantsearch({
// other search parameters
searchFunction: function(helper) {
if (helper.state.query.length === 0) {
return; // do not trigger search
}
helper.search(); // trigger search
}
});