在助手函数中传递一个变量

时间:2017-10-28 07:19:55

标签: meteor meteor-blaze

我在另一个帮助器中使用帮助器。我试图传递一个值'post_id',我从'show_post'帮助器动态获取。我想传递它然后在查询中使用它将一组结果返回给帮助器。由于某种原因,应用程序崩溃。有人可以指导我完成这件事。

{{#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;
}
});

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

1 个答案:

答案 0 :(得分:1)

首先,您不需要在双花括号或parens中包装辅助参数。

{{#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);
  }
});