如何隐藏在Meteor中加载页面后添加的所有文档?

时间:2013-04-03 19:53:17

标签: jquery meteor

谢谢大家,我已经使用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);
   }
});
}

3 个答案:

答案 0 :(得分:1)

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

See the Meteor docs

示例: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()方法

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