如何使Meteor中的部分文档不具有反应性
How to make part of the document not reactive in Meteor
大多数Meteor都围绕着集合和游标,并在它们出现在集合中并符合条件时获取新文档。然而,我正在处理更大的文件,这些文件包含多个字段,结构深刻且不可预测。在顶层有一个清晰的模式,但有些子文档是不可预测的json数据。
但让我们来看一个更简单的例子:
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}});
}
);
问题是,每次自动保存注释时,Meteor Tracker都会重新运行与此报告相关的所有子脚本和查找结果。由于报告很大,呈现也很复杂,因此重新加载对用户来说是可见的,并破坏了无缝自动保存的目的。
那么,问题是——是否有可能只在mongo文件的部分内容上触发反应?目前,我已经通过在渲染时手动比较新旧文档来解决这个问题,如果核心没有差异,则停止重新渲染。这感觉很奇怪,违背了流星精神。
在为模板设置数据上下文的助手或路由中,在find:中使用{reactive: false}
return Reports.find(query,{reactive: false});
这样,当底层对象发生更改时,辅助对象就不会更新。
然而,这个标志要么全有要么全无,它不会让你选择性地观察哪些变化,忽略哪些变化。
相关文章:
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- HTML文档中脚本标记的位置-<头部>&<身体>有不同的行为
- 是否可以使用有角度的HTML文档进行$编译
- 正在对已提取的文档进行填充.有可能吗?如果有,怎么做
- PouchDB,如何在已经有附件的文档中添加新附件
- 如果iframe在src(pdf或text)中有非html文档,则iframe中的onload不起作用
- 是否有 jQuery 事件用于何时将元素添加到文档中
- 有没有一种方法可以找到一个匹配两个不同填充的文档,并在findOne()中获取他的文档
- 当我尝试添加文本效果时,有东西阻止了JavaScript的运行'手风琴'在html文档中
- XUL文档与HTML文档对象有何不同
- 在文档就绪时追加DDL;不要让它在列表项上有CSS,而不让它们可排序
- 如何在不可变/反应文档页面上阅读代码示例
- 在IE7/8中,$(窗口)和$(文档)有什么区别
- 如何使用javascript将html内容(也有图像)转换为文档文件
- 如何使用撤消管理器确定文档是否有未保存的更改
- 是否有用于在网页中嵌入HTML文档的JavaScript组件
- 我有错误文档.注册元素未被细化
- MONGO 查找数组中至少有一个项目不在另一个项目中的文档
- 理解API文档有困难
- 为什么 mongo 中的新文档有一个对象而不是一个 ObjectId