我正在研究Meteor项目。该项目非常大,所以我需要扩展它。我将列出一个简单的例子。我有这种模板
<template name = "test">
<button class="press">press</button>
<div>
{{#each infos}}
{{this.name}} {{this.age}}
{{/each}}
</div>
</template>
因此我们知道,每当“信息”集合发生变化时,它都会自动反映在我的模板中。但我希望这个模板不被反应。
意思是,首次加载页面时,它应显示Mongo中存在的所有“名称”和“年龄”详细信息。之后,即使在集合“info”中进行了更改,也不应该反映在模板中。
我知道这听起来很奇怪。但有没有办法做到这一点。就像在第一次加载页面时调用ajax而不使用find()等等。 任何建议都被广泛接受。
并提前感谢你们所有人。
答案 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");
})