0

我在“postlist”模板上有一个姓名列表。这些是创建帖子的人的“用户名”。我创建了一个 href 链接,以便当用户单击名称时,他们会被路由/定向到新模板“viewpost”并能够查看完整的帖子文档。

但是,我希望在我将 {{> yield}} 放在“postlist”模板中的位置呈现“viewpost”模板。我如何配置layourTemplate,因为我已经有一个为应用程序的另一部分工作。

当然,这个帖子文件显然应该根据用户点击的名字而改变。

想想 Meteor todos 的例子。根据您是单击“加入”还是“登录”,将呈现相关模板。

所以到目前为止我所拥有的如下。

postlist.html(显示发布文档中的“全名”字段列表)。

<template name="postlist"> 
<div class="container">
<div class="col-sm-3">
    {{#each post}}
    <li><a href="{{pathFor 'viewpost'}}" >{{fullname}}</a></li>
    {{/each}}
</div>
</div>
{{> yield}}
</template>

路由器.js

Router.map(function(){
this.route('postlist',{
  path: '/postlist',
  template: 'postlist',
  waitOn: function(){
    return Meteor.subscribe('posts');
  },
  data: function(){
    return {post: Posts.find({})};
}
});
this.route('viewpost',{
  path: '/viewpost/:_id',
  template: 'viewpost',
   waitOn: function(){
    return Meteor.subscribe('posts');
  },
  data: function() { return Posts.findOne(this.params._id); }
});
});
4

1 回答 1

1

由于 'viewpost' 模板和 'postlist' 模板之间似乎没有太多的内容重叠,我认为只使用{{> viewpost currentPost}}代替 yield 并以编程方式设置 currentPost 实际上会更干净。例如,在 postlist 模板中,您可以有一个 currentPost 变量来返回当前帖子的数据,如下所示:

Template.postlist.helpers({
    currentPost: function () {
        return Posts.findOne(Session.get('currentPost'));
    }
});

当您单击帖子列表模板中的链接时,只需设置会话。

于 2014-10-17T18:29:13.263 回答