Javascript Meteor从服务器响应订阅更改
我似乎无法使用以下代码从服务器端获取被动收集更改:Javascript Meteor从服务器响应订阅更改,javascript,meteor,Javascript,Meteor,我似乎无法使用以下代码从服务器端获取被动收集更改: Template.name.onRendered(function() { this.autorun(function(){ Meteor.subscribe("items", Session.get("start"), Session.get("end"), function () { //update UI }); }); }); 当Session.
Template.name.onRendered(function() {
this.autorun(function(){
Meteor.subscribe("items", Session.get("start"), Session.get("end"), function () {
//update UI
});
});
});
当Session.get(“start”)
更改时,它将从服务器正确订阅范围内的所有项目,但如果我从mongo shell中删除了一个项目,则不会调用订阅回调,即客户端不会触发重新订阅,我需要使这两个条件正常工作
但似乎在每个订阅完成后,查询自动运行也会运行,这是不必要的,它实际上应该只从服务器拾取更改,我应该如何将服务器端范围内的任何更改反映到客户端?只有当您的反应变量(开始和结束)更改时,订阅才会再次运行。为了获取UI更新,您正在过度处理订阅回调(这不是正确的使用模式)。您的解决方案可能看起来更像。@davidwell仅在订阅完成后才提供UI所需的数据。我很想知道为什么这不是正确的模式,谢谢!但“更新UI”到底是什么?为什么你要主动地更新它,而不是让它自己被动地更新?您可能在这里采取了错误的方法。@CaptSaltyJack它正在更新fullcalendar事件源,它是一个js库,我只能通过调用它的API来刷新它。您是否考虑过使用Tracker.Dependency使日历调用成为反应性的?
Template.name.onRendered(function() {
// when user changed the date range, get the new data
this.autorun(function(){
Meteor.subscribe("items", Session.get("start"), Session.get("end"), function () {
//update UI
});
});
// get all the changes from server and update UI
this.autorun(function(){
Items.find(start, end);
//update UI
});
});