在生成所有dom之前渲染的模板

时间:2014-10-24 20:12:49

标签: meteor

我有这个代码适用于以前版本的Meteor:

<template name='posts'>
  {{# each posts }}
    <div class='post'>some text</div>
  {{/ each }}
</template>
Template.posts.rendered = function() {
  this.findAll('post').doSomething();
}

Template.posts.helpers({
  posts: function() {
    Meteos.subscribe('posts', this._id);
    return Posts.find({ someId: this._id });
  }
});

现在我使用Meteor 0.9.4并且在生成每个内部的dom之前调用渲染中的代码,因此this.findAll('post').doSomething()什么都不做。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您遇到的问题是,当呈现的回调触发时,并非所有数据都已加载到客户端上。

解决此问题的最简单方法可能是将每个帖子放在模板中,然后使用该模板的渲染回调:

<template name='posts'>
  {{# each posts }}
    {{> post}}
  {{/ each }}
</template>

<template name='post'>
  <div class='post'>some text</div>
</template>

Template.post.rendered = function() {
  this.find('.post').doSomething();
}

使用此代码,您将100%确定该帖子已被显示,并且如果在页面上有人添加和删除新帖子时,它将起作用。