【问题标题】:Meteor: Render template inside a templateMeteor:在模板内渲染模板
【发布时间】:2014-12-12 22:59:00
【问题描述】:

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

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

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

想想 Meteor 待办事项示例。根据您是单击“加入”还是“登录”,将呈现相关模板。

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

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

【问题讨论】:

标签: javascript templates meteor iron-router spacebars


【解决方案1】:

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

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

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

【讨论】:

  • {{&gt; Template.dynamic template='viewpost' data=currentPost}}{{&gt; viewpost currentPost}} 的反模式。 Template.dynamic 的重点是有一个动态模板。
  • @PeppeL-G 你说得对,我正在考虑在我自己的一个应用程序中使用稍微不同的用例。已编辑,谢谢! :)
猜你喜欢
  • 2015-06-16
  • 2017-03-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 2015-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多