-1

谢谢大家,我已经使用 Akshat 的解决方案迭代解决了这个问题,特别感谢 Akshat 如何帮助我解决了除此之外的另一个问题 - 快速、准确和出色的问题解决!

好的,所以我正在尝试在流星中创建一个帖子系统,我希望流星不显示新帖子,只计算它们并让用户决定何时显示它们。在此先感谢,丹尼尔。

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

3 回答 3

1

您可以使用块助手#constant将区域标记为常量。它将在第一次创建模板时加载,然后才加载。

查看 Meteor 文档

示例:page.js

Template.page.collection = function() {
     return MyCollection.find({});
}

示例:page.html

<template name="page">
    {{#consant}}
         {{#each collection}}
              {{this}}
         {{/each}}
     {{/constant}}
 </template>
于 2013-04-03T20:00:32.643 回答
1

很多好答案!另一种方法是对您希望它以这种方式运行的帖子使用非反应性查询。新结果基本上是反应性的结果,您可以在查询中禁用反应性

例如

MyCollection.find({}, {reactive:false});
于 2013-04-03T20:17:16.193 回答
0

使用 Collection.find().count() 方法

http://docs.meteor.com/#count

于 2013-04-03T20:02:58.370 回答