所以我有一个充满GPS坐标的流星集合,我在地图上绘制。我的Meteor集合中的任何时候数据都发生了变化,我有一个deps.autorun,它清除了我订阅中没有的所有标记。然后我绘制所有尚未绘制的标记。如果我有一堆数据快速更新,我的iPhone上的浏览器崩溃了。因此,我希望能够仅针对已更改的内容更新地图,而不是每次扫描并查找已更改的内容以减轻负载。这可能吗?
由于
答案 0 :(得分:2)
@ user728291是正确的,observeChanges或observe仅用于此类情况。
您要做的是按ID跟踪所有新对象:
Template.map.rendered = function () {
Places.find().observe({
added: function (doc) {
// code to add pin of doc
},
changed: function (newDoc, oldDoc) {
// code to move pin from oldDoc position to newDoc
},
removed: function (doc) {
// code to remove a pin associated with doc
}
});
}
实际上,只要将{{#each things}}...{{/each}}
模板助手与作为MongoDB游标返回的数据合并:
Template.myTemplate.things = function () {
return Things.find({ rating: { $gt: 3 } });
}
流星将在引擎盖下做同样的事情。 UI系统将观察光标上的变化,而不是重绘所有内容,它将找出更改的内容并仅更新显示列表的相关部分。