2016-04-03 57 views
2

大多数Meteor都围绕集合和游标进行处理,并在收集文档时出现并获取符合条件的新文档。然而,我正在处理更大的文档,这些文档包含多个字段,并且具有深度且不可预测的结构。在顶层有一个清晰的模式,但是一些子文档是不可预知的json数据。如何使文档的一部分在Meteor中不被反应

但是,让我们来看一个简单的例子:

Reports = new Mongo.collection('reports'); 

Meteor.publish('reports', function() { 
    return Reports.find({}); 
}); 

,然后在客户端,我打开一个报告,把它放在屏幕上的使用并不只-HTML相当复杂的渲染功能,然后有嵌入在报告中的自由文本注释字段。他们改变的时候,我想自动保存

Meteor.call("autosaveReport",reportId,comment); 

再有就是写在注释

Meteor.methods({ 
    "autosaveReport": function(reportId,comment) { 
     Reports.update({_id:reportId},{$set:{comment:comment}}); 
    } 
); 

问题是,每一次注释自动保存,流星跟踪重播流星方法所有订阅和发现都与本报告相关。而且由于报告很大且渲染复杂,该重新加载对用户是可见的并且破坏了无缝自动保存的目的。

所以,问题 - 是否有可能触发mongo文件的部分反应性?目前我已经通过手动比较渲染上的新旧文档来解决这个问题,如果核心没有区别,那么停止重新渲染。这感觉很奇怪,并且对流星的精神。

回答

1

在你的助手或路由设置数据上下文为模板,在查找中使用{reactive: false}

return Reports.find(query,{reactive: false}); 

这样的助手将不会更新底层对象改变时。

该标志全部或全部没有,但是,它不会让您选择要观察哪些更改以及忽略哪些更改。

相关问题