铁路由器动态模板渲染

时间:2014-10-18 16:07:14

标签: templates meteor iron-router spacebars

在我的流星项目中,我添加了铁:布局,铁:动态模板以及铁:路由器。

我的问题是,如果会话中没有可用的数据,如何阻止动态模板呈现?原因是,动态模板当前正在呈现其中除了数据上下文之外的所有html内容。当用户最初到达页面时,这就是问题。

我有一个名单列表' postlist'模板。这些是用户名'创建帖子的人当用户点击该名称时,该模板的“查看信息”就会显示出来。是通过相关数据传递...这很好。但如前所述,当用户第一次到达页面时,没有数据上下文。因此,除动态内容外,请查看所有内容。

以下是我当前的代码,在我之前的帖子中收到了帮助。 Meteor: Render template inside a template

HTML:

<template name="postlist"> 
  <div class="container">
   <div class="col-sm-3">
    {{#each post}}
    <li><a href="#">{{fullname}}</a></li>
    {{/each}}
   </div>
  </div>
  {{> Template.dynamic template='viewpost' data=currentPost}}
</template>

单击事件以捕获post _id / helper文件:

Template.postlist.helpers({
currentPost: function(){
    return Posts.findOne(Session.get('currentPost'));
}
});
Template.postlist.events({
'click li': function(e){
    e.preventDefault();
    Session.set("currentPost", this._id);
}
});

1 个答案:

答案 0 :(得分:0)

这是一种替代黑客方法,但理解并不是一种好的做法。这是我实际想要实现的目标,因此您可以获得一个想法。但我想对此问题提出非黑客建议。谢谢。

HTML:

<template name="viewpost">
    {{#if hasData}}
      <div class="container">
          Post creator is : {{username}} - Info: {{body_text}}
      </div>
    {{/if}}
</template>

JS:

Template.viewpost.helpers({
 "hasData":function(){
   return Session.get("currentPost");
}
});