2014-11-01 7 views
8

I 1.0 Meteor aktualisiert, installiert die neueste Eisen-Router-Paket versucht, meine app und bekam in meinem Konsolprotokoll diese nette Warnung auszuführen:total verwirrt über this.next() in Meteor Eisen-Router

Route Dispatch nie gerendert. Hast du vergessen, dies zu nennen.next() in eine onBeforeAction?

Also habe ich versucht, meine Routen entsprechend der neuen Version zu ändern.

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)]} 
    }); 

Wie kann ich das beheben? Jede Hilfe würde sehr geschätzt werden.

Antwort

9

Versuchen Sie, alle .wait() s zu entfernen und das Array um Ihre OnBefore-Funktion zu entfernen.

Mit der neuen API ersetzt this.next().wait().

+0

Vielen Dank! Das funktioniert! Brauche ich 3 x 'this.next()' oder nur einmal am Ende der Funktion? – user3475602

+0

Sie brauchen es nicht für das erste 'if'. Probieren Sie es aus und melden Sie sich zurück. – benstr

+0

Das hat bei mir funktioniert: 'if (singlePlayer) { if (singlePlayer.upgrade) { this.subscribe ('upgrades', this.params.slug) .wait(); } } this.next(); ' Könnten Sie bitte erklären, wo ich' this.next() 'im Allgemeinen platzieren sollte? Versuch-und-Irrtum-Methode ist ein bisschen frustrierend. – user3475602