如何将参数传递给使用Meteorite的Iron-Router Handlebars中的pathFor?

时间:2013-08-25 01:31:11

标签: meteor meteorite handlebars.js iron-router

我有一个带参数的简单路线:

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标签传递到网址,但是......

3 个答案:

答案 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;}}