2014-11-01 1 views
1

перед выпуском Метеор v1.0, я был запущен этот код с успехом:Iron-маршрутизатор onBeforeAction Метеор v1.0

onBeforeAction: function(){ 

if(Meteor.userId()){ 

    Meteor.call('create_game', this.params._id, 1, function(error, result){ 
    if (error) 
    console.log(error); 
    else{ 
     var game_id = result; 
     Session.set('gamesolo_id', game_id); 
    } 
    }); 
    } 
}, 
waitOn: function() { return Meteor.subscribe('game', Session.get('gamesolo_id'))}, 

С Метеор v1.0, this.next() необходимо в onBeforeAction крюк. Я пробовал:

onBeforeAction: function(){ 

if(Meteor.userId()){ 

    Meteor.call('create_game', this.params._id, 1, function(error, result){ 
    if (error) 
    console.log(error); 
    else{ 
     var game_id = result; 
     Session.set('gamesolo_id', game_id); 
    } 
    }); 
    this.next(); 
    } 
}, 
waitOn: function() { return Meteor.subscribe('game', Session.get('gamesolo_id'))}, 

Но это получается в цикле, призывающем навсегда метод. Любая идея, как это исправить?

+0

Возможно, попробуйте поместить 'this.next()' вне выражения 'if' – Sindis

+0

Спасибо за ответ. Но снаружи ничего не меняет. Этот метод называется циклом навсегда, и шаблон непрерывно переключается между шаблоном загрузки и шаблоном страницы. – user2409399

ответ

3

Теперь вы должны использовать onRun вместо onBeforeActionthis.next() не требуется).

+0

Интересно. Я не нашел никакого крюка, который называется onRunAction в документе. Во всяком случае, это не работает для меня, потому что я не получаю подписку на только что созданную игру. Мне нужен крючок, который создает игру, прежде чем я присоединяюсь к ней с помощью waitOn. В основном, onBeforeAction ... но я просто не делаю, что делать с this.next() – user2409399

+0

Извините, это 'onRun' (http://eventedmind.github.io/iron-router/#available-hook-methods). Я обновил ответ. –