2016-07-09 58 views
0

我正在使用搜索框來搜索我的web應用程序。單擊搜索按鈕時,用戶將被定向到'搜索結果'頁面並顯示結果。但在刷新頁面時搜索結果會丟失。如何使用會話恢復它們? 的HTML代碼是:MeteorJS.On在刷新頁面時搜索結果會丟失

<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

而不是使用一個輔助功能,讓我們設置在數據上下文您的路線:

Router.route('/posts/search/:somesearch/',{ 
    template:'searchresults', 
    name:'searchresults', 
    data: function(){ 
    return Posts.find({ name: this.params.somesearch }); 
    } 
}); 

完全刪除您的post模板助手。

在你的HTML模板,您需要與{{#each this}}this將是光標通過在路由器中data函數返回迭代。

請注意,對於多字搜索和特殊字符,您需要對搜索字符串進行網址編碼/解碼。

+0

主席先生,我做了更改,但仍然刷新頁面內容丟失。 –

+0

你的'#searchbox'在重新加載時是否被填充? –

+0

在我看來,OP的主要問題是由於使用'#searchbox'值作爲參數而不是路由參數的'searchresults'模板。因此,在執行操作後重新填充搜索框可能已經太晚了。 – ghybs