2017-10-28 65 views
1

我在另一个帮助器中使用了一个帮助器。我试图传递一个值'post_id',我从'show_post'helper动态获取。我想传递它,然后在返回一组结果返回给helper的查询中使用它。出于某种原因,应用程序崩溃。有人可以通过这个指导我。在帮助函数中传递变量

{{#each show_post}} 
{{posttext}} 

{{postedBy}} 

    {{#each show_comment({{post_id}}) }} 
    //<--- i am passing the value to helper like this. 
    <span> <p>{{postedBy}}: <h5>{{commenttext}}</h5>{{createdAt}}</p></span>      
    {{/each}} 

    {{/each}} 
    Template.display_block.helpers({ 
    show_post(){ 
    return PostComment.find({parent: 0},{sort: {createdAt: -1}}); 
    } 
    }); 

Template.display_block.helpers({ 
show_comment(e){ 
var t1 = e; 
var now = PostComment.find({post_id:{$regex:new RegExp(’^’ + t1)}}); 
return now; 
} 
}); 

第一辅助产生一个阵列(蒙戈Db的结果).I要在下一助手使用此数组的元素(即是动态的)。所以我想使用一个变量,它可以保存第一个帮助器的数组元素的值,然后将它传递给下一个帮助器。在第二个帮助程序中,我想要传递此变量并使用此变量对Mongo查询中的结果进行排序。我是新来的,所以我无法理解这个实例

回答

1

首先,你不需要用双花括号或者parens来包装helper参数。

{{#each show_comment post_id}} 

将做你所需要的。

你也让生活变得有点复杂。您可以通过代码中的this使用当前的数据上下文。还不清楚你为什么使用正则表达式,除非你将这些东西连接到_id

这可以让你下简化为:

HTML:

{{#each show_post}} 
    {{posttext}} 
    {{postedBy}} 
    {{#each show_comment}} 
    <span><p>{{postedBy}}: <h5>{{commenttext}}</h5>{{createdAt}}</p></span>      
    {{/each}} 
{{/each}} 

JS:

Template.display_block.helpers({ 
    show_comment(){ 
    return PostComment.find({post_id: this._id); 
    } 
});