2016-01-28 3 views
2

У меня довольно стандартная настройка для моего приложения метеоров с помощью IronRouter. У меня возникают проблемы с этим, я пытаюсь перенаправить кого-то на страницу на основе некоторых токенов в URL-адресе, поступающем с стороннего веб-сайта, но когда пользователь отправляется в пункт назначения из обратного вызова Accounts.onLogin через Router.go ("некоторые/весело/URL"); функция waitOn работает бесконечно. Ниже приведена соответствующая часть установки.Meteor IronRouter waitOn Бесконечная петля

Первый маршрут, который я перенаправлении:

Router.route("/shows/:show_acronym/sponsorships", { 
    name:"sponsorshipsSalesPortal", 
    data:function(){ 
     return {show:Shows.findOne({acronym:this.params.show_acronym})}; 
    }, 
    waitOn:function(){ 
     console.log("wait on"); 

     return [Meteor.subscribe("show_by_acronym",this.params.show_acronym),Meteor.subscribe("catalogue_products_by_acronym", this.params.show_acronym)]; 

    } 
}); 

Следующая соответствующая часть из OnLogin крючка:

Accounts.onLogin(function(){ 
    if (Session.get("showToRedirectTo")){ 
     console.log("sending to sponsorship portal"); 
     var ur ="/shows/"+Session.get("showToRedirectTo")+"/sponsorships" 

     return Router.go(ur); 
    } 
}); 

Когда она попадает редирект, изменения URL и сообщение «подождите на "печатает на консоли навсегда. Кто-нибудь знает о решении этого? Я бы предпочел сохранить все мои подписки на уровне маршрутизатора, если это вообще возможно.

Благодаря

ответ

0

Вы должны возвращать только подписные курсоров (Meteor.subscribe (*)) в обратном массиве waitOn. В этом случае проблема «this.params.show_acronym» ...

0

На самом деле ваш код выглядит хорошо, его было время, так как я не использую Iron Router или Sessions.

Но, глядя на WaitOn, кажется, все в порядке, проблема может прийти со стороны сервера, где show_by_acronym или catalogue_products_by_acronym его метание ошибки, но во всех случаях это должно привести к вам, чтобы получить spinner нагрузку навсегда, а не console.log("wait on"); напечатаны навсегда.

поэтому я думаю, что ваш Accounts.onLogin вызывает это.

Попробуйте что-нибудь подобное.

Accounts.onLogin(function(){ 
    if (Session.get("showToRedirectTo")){ 
     console.log("sending to sponsorship portal"); 
     var ur ="/shows/"+Session.get("showToRedirectTo")+"/sponsorships" 

     Router.go(ur); 
     Session.set('showToRedirectTo', false) 
    } 
}); 
Смежные вопросы