谢谢大家,我已经使用Akshat解决方案的迭代解决了问题, 特别感谢Akshat如何帮助我解决除此之外的另一个问题 - 快速,准确和令人敬畏的解决问题!
好的,所以我正在尝试在meteor中创建一个帖子系统,我希望meteor不显示新帖子,只计算它们并让用户决定何时显示它们。提前谢谢,丹尼尔。
(喜欢twitter的x新推文)
编辑: 大家好,感谢你们所有答案。问题是,这可能是一个非常具体的案例,因为我也在实施无限滚动,因此使其无反应将无济于事。
代码:
var Posts = new Meteor.Collection("posts");
if (Meteor.isClient) {
Session.set("current_page",1);
Template.posts.posts= function() {
return Posts.find({}, {limit: Session.get("current_page")*20,sort: {created_at:-1}});
};
function getDocHeight() {
var D = document;
return Math.max(
Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
Math.max(D.body.clientHeight, D.documentElement.clientHeight)
);
}
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() > getDocHeight() - 100) {
Session.set("current_page",Session.get("current_page")+1);
}
});
}
答案 0 :(得分:1)
您可以使用块助手#constant
将区域标记为常量。它将在首次创建模板时加载,然后才会加载。
示例:page.js
Template.page.collection = function() {
return MyCollection.find({});
}
示例:page.html
<template name="page">
{{#consant}}
{{#each collection}}
{{this}}
{{/each}}
{{/constant}}
</template>
答案 1 :(得分:1)
很多好的答案!另一种方法是对您希望它以这种方式运行的帖子使用非反应性查询。新结果基本上是reactivity的结果,您可以在查询中disable reactivity
e.g
MyCollection.find({}, {reactive:false});
答案 2 :(得分:0)
使用Collection.find()。count()方法