流星:渲染模板内的模板

时间:2014-10-17 11:06:33

标签: javascript templates meteor iron-router spacebars

我有一个名单列表' postlist'模板。这些是用户名'创建帖子的人我创建了一个href链接,这样当用户点击该名称时,它们就会被路由/定向到新模板&view;并能够查看完整的帖子文档。

但是,我希望' viewpost'要放置的模板{{>屈服}}在' postlist'而不是模板。如何配置layourTemplate,因为我已经有一个工作用于应用程序的另一部分。

当然,这篇文章显然应该根据用户点击的名称进行更改。

Think Meteor todos示例。取决于您是否点击“加入”#39;或者'登录',相关模板被渲染。

所以我到目前为止的内容如下。

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>

router.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); }
});
});

1 个答案:

答案 0 :(得分:1)

因为&#39; viewpost&#39;之间的内容重叠似乎不大。模板和&#39;帖子列表&#39;模板,我认为仅使用{{> viewpost currentPost}}代替yield会更清晰,并以编程方式设置currentPost。例如,在postlist模板中,您可以使用currentPost变量返回当前帖子的数据,如下所示:

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

,只需点击帖子列表模板中的链接即可设置会话。