如何取消订阅收藏
How to unsubscribe from the collection?
我的出版物:
Meteor.publish('items', function() {
return Items.find({}, {skip: randomNumber, limit: 100});
});
我的订阅代码发生在点击按钮时(在templates.event中)
Meteor.subscribe('items');
Items.find().fetch();
然而,问题是项目不会用新数据刷新,而是将新数据附加到旧列表中。如何取消订阅旧数据?
当您调用Meteor.subscribe
时,它将返回一个订阅句柄。
您在句柄上调用stop
以取消它。
例如,在您的活动中帮助
if (SomeGlobalVar){
SomeGlobalVar.stop();
}
SomeGlobalVar = Meteor.subscribe('items');
另一种方式是在Deps.autorun
内部运行订阅;它将自动清理旧订阅。
例如,在您的事件处理程序中
Session.set('subscribe', true);
代码中的其他位置:
Deps.autorun(function(){
if (Session.get('subscribe')){
Meteor.subscribe('items');
}
});
如果您呼叫Session.set('subsribe', false);
,Meteor将自动取消/清除对items
的订阅。
在我看来,这里有点混乱,当你连接到反应数据源时,你没有订阅特定的数据,所以当添加新记录时,它们当然会通过该连接附加到你的数据中。
如果我理解你的问题,并且你希望新数据完全取代旧数据,我建议你不要围绕"集合"构建模板,而是围绕数据的缓存版本构建模板(该版本将保存在对象中,并使用Deps进行响应),这样你就可以完全控制显示的数据。
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- jquery点击函数select&取消选择
- 使用Jquery选择或取消选择ListView中的所有复选框
- 使用jquery选中/取消选中单个复选框
- 使用javascript取消隐藏和隐藏表单中的某些元素
- 如何销毁/删除/取消绑定SnapSVG.js
- 滚动然后捕捉到顶部而不是取消捕捉
- 取消绑定主干视图事件
- 如何取消object.prototypes javascript的一个函数
- 使用javascript在页面加载时取消选中所有复选框
- 使用HTML5 localStorage和jQuery添加到收藏夹/书签
- 阻止浏览器对keydown事件作出反应,但不取消该事件
- jquery选中并取消选中所有操作
- IE11中的第二个调用取消了第一个Fetch API调用
- 如何知道使用socket.io订阅/取消订阅频道
- 如何在单击“提交”按钮时为“新建”窗口编写JavaScript,用“确定”和“取消”显示注册信息
- 如何在javascript中取消选择文本框
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- (取消)使用单独的复选框激活复选框列表
- 如何取消订阅收藏