MeteorJS.On刷新页面时搜索结果会丢失

时间:2016-07-09 20:50:33

标签: javascript meteor iron-router meteor-blaze

我正在使用我的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',


});

1 个答案:

答案 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编码/解码。