在流星中进行非反应性呼叫

时间:2015-02-07 03:55:06

标签: meteor helpers meteorite spacebars

我正在研究Meteor项目。该项目非常大,所以我需要扩展它。我将列出一个简单的例子。我有这种模板

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

    </div>
</template>

因此我们知道,每当“信息”集合发生变化时,它都会自动反映在我的模板中。但我希望这个模板不被反应。

意思是,首次加载页面时,它应显示Mongo中存在的所有“名称”和“年龄”详细信息。之后,即使在集合“info”中进行了更改,也不应该反映在模板中。

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

并提前感谢你们所有人。

2 个答案:

答案 0 :(得分:3)

您的帮助者可以使用非反应性find。来自文档:

  

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

以下是infos帮助程序的示例实现:

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

答案 1 :(得分:-1)

不知道这是最好的解决方案还是不试试这个

使用nonReactive订阅

文档:http://docs.meteor.com/#/full/tracker_nonreactive

Tracker.nonreactive(function(){
   Meteor.subscribe("infos");
})