2014-11-10 4 views
14

In einem Template Helper ich den Strompfad von Iron.Router erhalten (iron:router) wie folgt:Meteor Eisen Router erhalten Aktueller Pfad von der Route mit Parametern in einem Template Helper

Router.current().route.path() 

Dies funktioniert gut, es sei denn, der Weg Weg tut Parameter enthalten (zB /client/:_id/edit). In diesem Fall gibt die path() Funktion null zurück.

Wie bekomme ich den aktuellen Pfad innerhalb eines Template Helpers, wenn die Route Parameter enthält?

Ich verwende Meteor 1.0 mit iron:router 1.0.1

+0

Das klingt wie ein Bug mit Eisen-Router selbst. Ich würde auf GitHub etwas auf ihre Ausgaben setzen. – Scalahansolo

Antwort

14

nehme ich die _id in Ihrer Route aus einer Sammlung kommt, müssen Sie route.path das Dokument der Route basiert passieren.

Router.route("/client/:_id/edit",{ 
    name:"edit", 
    data:function(){ 
    return MyCollection.findOne(this.params._id); 
    } 
}); 

<template name="edit"> 
    {{myHelper}} 
    {{pathFor route="edit"}} 
</template> 

Template.edit.helpers({ 
    myHelper:function(){ 
    return Router.current().route.path(this); 
    } 
}); 

Ich schlage vor, Sie den Standard pathFor Helfer verwenden, um eine URL in der App-Rendering.

https://github.com/EventedMind/iron-router/blob/devel/Guide.md#pathfor

Dieser Helfer des aktuellen Datenkontext verwendet (in diesem Fall MyCollection.findOne(this.params._id)) Streckenparameter zu extrahieren.

Sie können aber auch die Pfadmethode aus der Route verwenden, die das Dokument, für das Sie den Pfad generieren möchten, als erstes Argument verwendet.

+0

Perfekte und detaillierte Antwort, danke. Ich brauche den Pfad im Kontext der Navigation/Hervorhebung bestimmter Elemente. Ich hatte das Setup bereits genau so, wie Sie es im Beispiel gezeigt haben, aber ich wusste nichts über das Dokument ('this') Argument für die' path' Funktion. –

Verwandte Themen