从模板传递meteor.js中的参数

时间:2014-09-01 14:31:36

标签: meteor iron-router

我正在尝试从博客列表链接到博客详细信息页面,但该链接不起作用。我在这做错了什么?链接中的this._id是正确的ID。 这是我的路线

this.route('blogdetail', {
    path: '/groupsmain/:_id/blogs/:paramOne',
    template:'groupdetail',
    yieldTemplates: {
        'blogdetail': {to: 'dynamiccontent'}
    },
    controller: blogdetailController
});

博客列表的网址是

http://localhost:3000/groupsmain/NQxvBfeNQE875HDRR/blogs

这是我的博客详情链接

 <h3><a href="{{pathFor 'blogdetail' paramOne=this._id}}">{{this.title}}</a></h3>

2 个答案:

答案 0 :(得分:2)

pathFor从当前数据上下文中获取参数,而不是从传递给它的参数中获取参数。因此,您需要使用#with帮助程序更改上下文:

<a href="{{#with _id=_id paramOne=this._id}}{{pathFor 'blogDetail'}}{{/with}}">

答案 1 :(得分:0)

查看当前的Iron Router's code(版本0.9.1),看起来pathFor帮助程序仅在您不在助手调用中明确传递任何参数时才使用上下文。这可能是一个错误,因为文档示例显示您可以混合两种情况。

因此,您必须在pathFor帮助程序中传递这两个参数,或者在上下文中设置这两个值。您只在帮助程序中传递paramOne并期望Iron Router在其他位置获取_id参数。试试这个:

<a href="{{pathFor 'blogdetail' _id=whicheverIdYouNeedHere paramOne=_id}}">{{title}}</a>

如果whicheverIdYouNeedHere实际上是父上下文的属性,则可以使用..关键字获取它。你最终会得到类似的东西:

<a href="{{pathFor 'blogdetail' _id=../nameOfThePropertyFromTheParentContext paramOne=_id}}">{{title}}</a>