2014-10-20 1 views
0

У меня есть два маршрута с двумя шаблонами. В одном из них пользователь подписывается на коллекцию после нажатия кнопки.Метровая остановка подписки, если сменить маршрут

'click #play' : function() { 

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

Что я хочу выполнить, это прекратить подписку, если пользователь изменит маршрут. Я мог бы использовать функцию waitOn Iron-Router, после чего подписка будет отменена, если пользователь изменит маршрут, но я хочу начать подписку, только если пользователь нажимает «нет», если он просто маршрутизирует.

ответ

2

Когда вы вызываете Meteor.subscribe, вы получаете дескриптор подписки в качестве возвращаемого значения. Этот дескриптор имеет метод stop(), который вы можете вызывать, когда хотите остановить подписку. Так что вы, вероятно, хотите сделать, это сохранить эту ручку где-то и называют его, когда изменение маршрута:

handle = Meteor.subscribe(...); 

В обратный вызов Iron Router:

handle.stop(); 
+0

Где вы сохранить его? Я попытался сохранить его с помощью переменной сеанса Session.set ('s', handle), а затем Session.get ('handle'). Stop() возвращает undefined не является функцией – user2409399

+0

Я не думаю, что вы можете хранить объекты в сеансе, просто данные. можете ли вы сохранить в переменной шаблона? – dcsan

+0

Не совсем, я хочу остановить его на другом шаблоне, чем тот, который я начал. – user2409399