2014-03-01 10 views

Antwort

18

Sie werden wahrscheinlich einen Router verwenden wollen, um Pfade zu verwalten und bestimmte Vorlagen für verschiedene Pfade zu rendern. Das Eisen-Router-Paket ist das beste, das dafür verfügbar ist. Wenn Sie es nicht bereits verwenden, würde ich es sehr empfehlen.

Sobald Sie Iron-Router verwenden, ist es sehr einfach, die Abfragezeichenfolgen und URL-Parameter abzurufen. Sie können den Abschnitt der Dokumentation hier: https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#route-parameters

Für das Beispiel können Sie die Route gab würde wie folgt aussehen:

Router.map(function() { 
    this.route('home', { 
    path: '/', 
    template: 'task_app' 
    data: function() { 
     // the data function is an example where this.params is available 

     // we can access params using this.params 
     // see the below paths that would match this route 
     var params = this.params; 

     // we can access query string params using this.params.query 
     var queryStringParams = this.params.query; 

     // query params are added to the 'query' object on this.params. 
     // given a browser path of: '/?task_name=abcd1234 
     // this.params.query.task_name => 'abcd1234' 
     return Tasks.findOne({task_name: this.params.query.task_name}); 

    } 
    }); 
}); 

Diese eine Route erstellen würde, die die ‚task_app‘ Vorlage mit einem machen würde Datenkontext der ersten Aufgabe, die mit dem Aufgabennamen übereinstimmt.

Sie können auch mithilfe von Router.current() auf die URL-Parameter und andere Routeninformationen von Vorlagenhelfern oder anderen Funktionen zugreifen, um die aktuelle Route abzurufen. So könnten Sie beispielsweise in einem Helfer Router.current().params.query.task_name verwenden, um den aktuellen Aufgabennamen abzurufen. Router.current() ist ein reaktives Element. Wenn es innerhalb der reaktiven Berechnung verwendet wird, wird die Berechnung erneut ausgeführt, wenn Änderungen an der Route vorgenommen werden.

+2

Antwort sollte akzeptiert werden :) – kylemclaren

+1

Nun, wie Sie auf diesen Parameter zugreifen können, wenn das Template in Ihrem Beispiel geladen wird. base in diesem Beispiel, wie man auf this.params.taskname in Template.home.events ({}) zugreift – JCm

+0

Diese Antwort sagt uns nur, wie man auf die Abfrageparameter in der Datei router.js zugreift. Es wird nicht erläutert, wie auf die Abfrageparameter in einer Template-Funktion zugegriffen wird, wie im ursprünglichen Beispiel angegeben. – JoeTidee