2014-11-01 1 views
8

я повышен до Meteor 1.0, установлен последний пакет железа маршрутизатора, попытался запустить мое приложение и получил это хорошее предупреждение в моем журнале консоли:Полностью запутались this.next() в метеорном железе маршрутизатора

Отправка маршрута никогда не отображается. Вы забыли позвонить в это .next() в a onBeforeAction?

Поэтому я попытался изменить свои маршруты в соответствии с новой версией.

this.route('gamePage', { 
     path: '/game/:slug/', 
     onBeforeAction: [function() { 
      this.subscribe('singlePlayer', this.params.slug).wait(); 
      var singlePlayer = this.data(); 
      if (singlePlayer) { 
       if (singlePlayer.upgrade) { 
        this.subscribe('upgrades', this.params.slug).wait(); 
        this.next(); 
       } 
       this.next(); 
      } 
      this.next(); 
     }], 
     data: function() { 
      return Games.findOne({slug: this.params.slug}); 
     }, 
     waitOn: function() { return [Meteor.subscribe('singleGame', this.params.slug)]} 
    }); 

Как это исправить? Любая помощь будет принята с благодарностью.

ответ

9

Попробуйте удалить все .wait() s и удалив массив вокруг вашей функции onBefore.

С новым API this.next() заменяет .wait().

+0

Спасибо! Это работает! Нужно ли мне 3 x 'this.next()' или один раз в конце функции? – user3475602

+0

Возможно, это не понадобится для первого 'if'. Попробуйте и сообщите об этом. – benstr

+0

Это сработало для меня: 'if (singlePlayer) { if (singlePlayer.upgrade) { this.subscribe ('upgradees', this.params.slug) .wait(); } } this.next(); ' Не могли бы вы объяснить, где я должен поместить' this.next() 'вообще? Метод проб и ошибок немного расстраивает. – user3475602

 Смежные вопросы

  • Нет связанных вопросов^_^