0

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

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

我在“postlist”模板上有一个姓名列表。这些是创建帖子的人的“用户名”。当用户单击名称时,模板“viewpost”会呈现并传递相关数据……这很好。但如前所述,当用户第一次到达页面时,没有数据上下文。所以看到除了动态内容之外的所有内容。

以下是我当前的代码,在我之前的帖子中获得了帮助。Meteor:在模板内渲染模板

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

1 回答 1

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");
}
});
于 2014-10-18T17:20:40.533 回答