Iron-Router onBeforeAction Meteor v1.0

преди пускането на Meteor 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'))},

От Meteor 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'))},

Но се оказва в цикъл, извикващ завинаги метода. Някаква идея как да го поправя?


person user2409399    schedule 01.11.2014    source източник
comment
Може би опитайте да поставите this.next() извън израза if   -  person sdooo    schedule 01.11.2014
comment
Благодаря за отговора. Но отвън нищо не се променя. Методът се нарича цикъл завинаги и шаблонът непрекъснато превключва между шаблона за зареждане и шаблона на страницата.   -  person user2409399    schedule 01.11.2014


Отговори (1)


Трябва да използвате onRun сега вместо onBeforeActionthis.next() не е необходимо).

person Christian Fritz    schedule 01.11.2014
comment
интересно Не намерих никаква кука, наречена onRunAction в документа. Както и да е, не работи за мен, защото не получавам абонамента за току-що създадената игра. Имам нужда от кука, която създава игра, преди да се абонирам за нея с waitOn. По принцип onBeforeAction ... но просто не знам какво да правя с this.next() - person user2409399; 01.11.2014
comment
Съжаляваме, това е onRun (eventedmind.github.io/iron-router/#available -hook-methods). Актуализирах отговора. - person Christian Fritz; 02.11.2014