2015-02-07 52 views
0

我正在处理Meteor项目。该项目非常大,所以我需要扩展它。我将列举一个简单的例子。我有这种在流星中作出非反应性呼叫

<template name = "test"> 
    <button class="press">press</button> 
    <div> 
     {{#each infos}} 
      {{this.name}} {{this.age}} 
     {{/each}} 

    </div> 
</template> 

因此,我们知道,每当“的相关信息”收集改变时,它会自动在我的模板反映的模板。但是我希望这个模板是非反应性的。

这意味着,当页面第一次加载时,它应该显示Mongo中的所有“名称”和“年龄”细节。之后,即使在集合“info”中进行了更改,它也不应该反映在模板中。

我知道这听起来很奇怪。但是有没有办法做到这一点。就像在不使用find()等首先加载页面时调用ajax一样 任何建议都被广泛接受。

并提前感谢你的所有。

回答

3

你的助手可以使用非反应性find。从文档:

任何更改集合,更改光标中的文档将触发重新计算。要禁用此行为,请传递{reactive:false}作为查找选项。

这里的infos帮手的示例实现:

Template.test.helpers({ 
    infos: function() { 
    return Infos.find({}, {reactive: false}); 
    } 
}); 
+0

@avishek我建议这个答案 – Sasikanth 2015-02-07 04:51:47

+0

@大卫您好,感谢。但我希望数据首次显示。上面的这个解决方案使得它没有被动反应,甚至没有第一次完全不显示数据。 – 2015-02-07 06:03:58

+0

该解决方案假定订阅数据在模板帮助程序运行之前已准备就绪。如果您使用的是铁路路由器,则可以通过在呈现包含此模板的路由之前等待订阅来解决此问题。 – 2015-02-07 06:18:07