2014-10-29 16 views
20

Czy ktokolwiek inny otrzymuje następujący błąd od Iron-Router od aktualizacji Meteor do wersji 1.0?Meteor v 1.0 i Iron: Router

Opublikuj tutaj, jeśli wiesz, jak rozwiązać ten problem.

Wywołanie trasy nigdy nie jest renderowane. Czy zapomniałeś zadzwonić pod numer this.next() w numerze onBeforeAction?

Router.map(function() { 
    Router.route('profileShow', { 

     waitOn: function() { 
      if (Meteor.user()) { 
       Meteor.subscribe('userData'); 
      } else { 
       this.next(); 
      } 
     }, 

     data: function() { 
      if (Meteor.user()) { 
       return {profile: Meteor.user().profile}; 
      } 
     } 
    }); 
}); 

Odpowiedz

29

Było non wstecznie kompatybilny zmiany w najnowszej wersji Iron routera. Przewodnik migracji mówi:

onRun i onBeforeAction haki wymagają teraz zadzwonić this.next(), a nie wziąć pause() argument. Więc domyślne zachowanie jest odwrócone. Na przykład, jeśli miał:

Router.onBeforeAction(function(pause) { 
    if (! Meteor.userId()) { 
    this.render('login'); 
    pause(); 
    } 
}); 

będziesz musiał uaktualnić go do

Router.onBeforeAction(function() { 
    if (! Meteor.userId()) { 
    this.render('login'); 
    } else { 
    this.next(); 
    } 
}); 

More information

W Tobie W przypadku, w przypadku poprawki "książka po książce", na końcu this.next() zostanie dodane onBeforeAction. Jednakże, należy raczej używać waitOn:

waitOn: function() { 
    return Meteor.subscribe("userData"); 
} 

W ten sposób można ustawić loadingTemplate który pojawi się, gdy subskrypcja userData się ładuje.

+3

Po prostu dodaje, że może to być onRun powodujący błąd, nawet jeśli komunikat mówi, że to onBeforeAction. Komunikat o błędzie może być lepszy. –