【问题标题】:Meteor stop subscription if change route如果更改路线,流星停止订阅
【发布时间】:2014-12-15 19:03:20
【问题描述】:

我有两条带有两个模板的路线。在其中之一中,用户在单击按钮后订阅集合。

 'click #play' : function() {

    Meteor.call('create_game', this._id, function(error, result){
      Meteor.subscribe('game', result);
     });
 }

如果用户更改路线,我想要执行的是停止订阅。我可以使用 Iron-Router 的 waitOn 功能,如果用户更改路由,订阅将被取消,但我只想在用户点击时才开始订阅,如果他只是路由。

【问题讨论】:

    标签: javascript meteor iron-router


    【解决方案1】:

    当您调用Meteor.subscribe 时,您会得到一个订阅句柄作为返回值。此句柄有一个stop() 方法,您可以在想要停止订阅时调用该方法。所以你可能想要做的就是把这个句柄保存在某个地方,并在路由改变时调用它:

    handle = Meteor.subscribe(...);
    

    在 Iron Router 回调中:

    handle.stop();
    

    【讨论】:

    • 你把它保存在哪里?我试图用会话变量 Session.set('s', handle) 保存它,然后 Session.get('handle').stop() 返回 undefined is not a function
    • 我认为您不能在会话中存储对象,只能存储数据。你可以存储在模板的变量中吗?
    • 不是真的,我想在与我启动它的模板不同的模板上停止它。
    • 如果您声明一个没有 'var' 关键字的顶级变量,它将在您的所有文件中可见。不能使用 Session 来存储句柄,因为 Session 不能存储函数。
    猜你喜欢
    • 1970-01-01
    • 2015-05-31
    • 2015-05-15
    • 2023-03-31
    • 2015-09-27
    • 2016-02-17
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多