我有一个带参数的简单路线:
this.route('article', {
path: '/article/:_id',
data: function() { return Articles.findOne(this.params._id); }
});
我想在这里使用带有_id的路径帮助:
{{#each articles}}
<li><a href="{{pathFor 'article' _id}}">{{title}}</a></li>
{{/each}}
这不适用于将_id标签传递到网址,但是......
答案 0 :(得分:61)
<li><a href="{{pathFor 'article' _id=this._id }}">{{title}}</a></li>
如何传递参数
答案 1 :(得分:13)
在您的示例中,您不需要传递任何参数。 pathFor
助手将自动使用当前数据上下文并从该对象中获取属性。由于您有{{#each articles}}
迭代器,pathFor
的当前数据上下文将被设置为列表中的当前项(文章)。文章对象应该有一个_id
属性,因此路径助手才能正常工作。如果要更改数据上下文,可以将另一个对象作为第一个参数传递给pathFor
帮助程序,或者可以使用{{#with anotherDataContextObject}}
块帮助程序。
在v0.5.4中,您还可以使用Handlebars哈希键值来替换上下文对象。在开发分支中,这不再是真实的。如果在Handlebars帮助程序中提供键值对作为参数,那么这些键对将附加到查询字符串中。这里举例说明dev分支的变化:
{{pathFor 'article' article q=some+query}}
//=> "/article/abcd/?q=some+query
或强>
{{#with article}}
{{pathFor 'article' q=some+query}}
//=> "/article/abcd/?q=some+query
{{/with}}
答案 2 :(得分:0)
在Meteor 1.3.X中,我使用了path for helper的选项。
{{pathFor route =&#39;&#39; data = query =&#39;&#39;散列=&#39;&#39;}}