2014-10-20 44 views
0

我有两个模板的路线。在其中之一中,用户点击一个按钮后订阅一个集合。流星停止订阅,如果改变路线

'click #play' : function() { 

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

我想要执行的是停止订阅,如果用户更改路由。我可以使用Iron-Router的waitOn函数,如果用户更改了路由,则订阅将被取消,但是只有当用户点击路由时才会启动订阅。

回答

2

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

handle = Meteor.subscribe(...); 

在铁路由器回调:

handle.stop(); 
+0

你在哪里保存呢?我试着用会话变量Session.set('s',handle)和Session.get('handle')来保存它。stop()返回undefined不是函数 – user2409399 2014-10-20 19:29:09

+0

我不认为你可以存储对象在会议中,只是数据。你能存储模板的变量吗? – dcsan 2014-10-21 08:26:48

+0

不是真的,我想停止在与我创建的模板不同的模板上。 – user2409399 2014-10-21 15:01:37