J'ai un itinéraire simple avec un paramètre:
this.route('article', {
path: '/article/:_id',
data: function() { return Articles.findOne(this.params._id); }
});
J'aimerais avoir ici l'aide du guidon pathFor avec le _id:
{{#each articles}}
<li><a href="{{pathFor 'article' _id}}">{{title}}</a></li>
{{/each}}
Cela ne fonctionne pas pour passer la balise _id dans l'url si ...
<li><a href="{{pathFor 'article' _id=this._id }}">{{title}}</a></li>
Voilà comment vous passez un paramètre
Dans votre exemple, vous n'avez pas besoin de transmettre de paramètres. L'assistant pathFor
utilisera automatiquement le contexte de données actuel et récupérera la propriété de cet objet. Puisque vous avez un {{#each articles}}
itérateur, le contexte de données actuel pour pathFor
sera défini sur l'élément en cours dans la liste (un article). L'objet article doit avoir un _id
propriété dessus, donc l'assistant de chemin ne fonctionnera que. Si vous souhaitez modifier le contexte des données, vous pouvez passer un autre objet comme premier paramètre à l'assistant pathFor
, ou vous pouvez utiliser le {{#with anotherDataContextObject}}
aide de bloc.
Dans la version 0.5.4, vous pouvez également utiliser les valeurs de clé de hachage Handlebars pour remplacer l'objet contextuel. Dans la branche dev, ce n'est plus vrai. Si vous fournissez des paires clé-valeur en tant que paramètres dans votre assistant Handlebars, celles-ci seront ajoutées à la chaîne de requête. Pour illustrer voici un exemple pour le changement de branche de développement:
{{pathFor 'article' article q=some+query}}
//=> "/article/abcd/?q=some+query
O
{{#with article}}
{{pathFor 'article' q=some+query}}
//=> "/article/abcd/?q=some+query
{{/with}}
Dans Meteor 1.3.X, j'utilise les options de l'assistant pathFor.
{{pathFor route = '' data = query = '' hash = ''}}