我正在使用我的webapp的搜索框。点击搜索按钮,用户将被定向到搜索结果'页面和结果显示。但刷新页面时搜索结果丢失。如何使用会话恢复它们? HTML代码是:
<div class="form-group">
<input type="text" class="form-control" id='searchbox' placeholder="Search">
</div>
js代码是:
Template.navigation.events({
'submit form':function(event){
event.preventDefault();
var searchbox=document.getElementById('searchbox').value;
Router.go('/posts/search/'+searchbox);
}
});
Template.searchresults.helpers({
'post':function(){
var searchbox=document.getElementById('searchbox').value;
var search=new RegExp('\\b'+searchbox+'\\b','i');
return Posts.find({name:search});
}
});
和routerjs代码是:
Router.route('/posts/search/:somesearch/',{
template:'searchresults',
name:'searchresults',
});
答案 0 :(得分:0)
不要使用辅助函数,而是在路径中设置数据上下文:
Router.route('/posts/search/:somesearch/',{
template:'searchresults',
name:'searchresults',
data: function(){
return Posts.find({ name: this.params.somesearch });
}
});
完全删除post
模板助手。
在您的HTML模板中,您需要使用{{#each this}}
进行迭代,因为this
将是路由器中data
函数返回的游标。 / p>
注意,对于多字搜索和特殊字符,您需要对搜索字符串进行url编码/解码。