我有这个代码适用于以前版本的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()
什么都不做。我该如何解决这个问题?
答案 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%确定该帖子已被显示,并且如果在页面上有人添加和删除新帖子时,它将起作用。