29

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

this.route('article', {
        path: '/article/:_id',
        data: function() { return Articles.findOne(this.params._id); }
    });

我想在这里使用带有_id的pathFor车把助手:

{{#each articles}}
<li><a href="{{pathFor 'article' _id}}">{{title}}</a></li>
{{/each}}

但是,这不适用于将 _id 标签传递到 url...

4

3 回答 3

61
<li><a href="{{pathFor 'article' _id=this._id }}">{{title}}</a></li>

这就是你传递参数的方式

于 2013-08-25T01:47:04.820 回答
13

在您的示例中,您不需要传递任何参数。助手将pathFor自动使用当前数据上下文并从该对象中获取属性。由于您有一个{{#each articles}}迭代器,因此当前数据上下文pathFor将设置为列表中的当前项目(一篇文章)。article 对象上应该有一个_id属性,因此路径助手将正常工作。如果你想改变数据上下文,你可以将另一个对象作为第一个参数传递给pathFor助手,或者你可以使用{{#with anotherDataContextObject}}块助手。

在 v0.5.4 中,您还可以使用 Handlebars 哈希键值来替换上下文对象。在 dev 分支中,这不再是真的。如果您在 Handlebars 帮助程序中提供键值对作为参数,这些将被附加到查询字符串中。为了说明这里是一个开发分支更改的示例:

{{pathFor 'article' article q=some+query}}
//=> "/article/abcd/?q=some+query

或者

{{#with article}}
{{pathFor 'article' q=some+query}}
//=> "/article/abcd/?q=some+query
{{/with}}
于 2013-09-25T06:33:18.943 回答
0

在 Meteor 1.3.X 中,我使用 pathFor 助手的选项。

{{pathFor route='' data= query='' hash=''}}

于 2016-09-27T16:23:27.177 回答