2016-07-09 11 views
0

Ich benutze ein Suchfeld für meine Webapp.Auf den Suchknopf klicken, wird der Benutzer auf die 'searchresults' Seite geleitet und die Ergebnisse angezeigt. Aber beim Aktualisieren der Seite der Suchergebnisse sind verloren.Wie kann ich sie mithilfe der Sitzung wiederherstellen? Der HTML-Code ist:MeteorJS.Auf der Aktualisierung einer Seite gehen die Suchergebnisse verloren

<div class="form-group"> 
     <input type="text" class="form-control" id='searchbox' placeholder="Search"> 
</div> 

Der js-Code ist:

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}); 
     } 
    }); 

und routerjs Code ist:

Router.route('/posts/search/:somesearch/',{ 
    template:'searchresults', 
    name:'searchresults', 


}); 

Antwort

0

Statt eine Hilfsfunktion zu verwenden, lassen Sie uns den Datenkontext gesetzt in Ihre Route:

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

Entfernen Sie Ihren post Vorlagenhelfer vollständig.

in Ihrer HTML-Vorlage müssen Sie mit {{#each this}} als this wird das Cursor durch die data Funktion im Router zurücklaufen.

Hinweis, für mehrsprachige Suchen und Sonderzeichen müssen Sie die Suchzeichenfolge url-encodieren/decodieren.

+0

Sir Ich machte die Änderungen, aber immer noch auf die Seite aktualisieren den Inhalt verloren ist. –

+0

Wird Ihre '# searchbox 'beim erneuten Laden gefüllt? –

+0

Es scheint mir, dass das Hauptproblem von OP auf das 'searchresults'-Template zurückzuführen ist, das den '# searchbox'-Wert als Parameter und nicht die Parameter der Route verwendet. Daher ist es möglicherweise bereits zu spät, das Suchfeld nach der Aktion erneut zu füllen. – ghybs