2015-03-10 3 views
0

Люди, я продвигаюсь вперед, но я уверен, что есть лучший, более элегантный способ выполнить эту функцию. Как и прежде, я хочу, чтобы пользователи «всегда» были перенаправлены на страницу приветствия после входа в приложение, даже если они были ранее выписаны на другой странице. Что меня заводит, так это требование this.next() для железобетонов onBeforeAction.Железо: страница назначения маршрутизатора ПОСЛЕ входа

Кратко сценарий:

1) Пользователь переходит к приложению и запрошено «Добро пожаловать, но, пожалуйста, войдите в/вверх» страницу.

2) подписывает пользователем, и маршрутизатор направляет пользователя к «Добро пожаловать в приложение» страницу

3) Пользователь переходит через приложение к «pageOne», а затем решает выйти и снова представленная страница «Добро пожаловать, но пожалуйста, войдите в систему/вверх». (Тем не менее, URL-адрес по-прежнему читается http://xxx.xxx.xxx.xxx/pageOne)

4) Пользователь снова вводит знак, где теперь приложение должно вместо отображения страницы «pageOne», которая является поведением this.next(), должна быть представлена «Добро пожаловать на страницу приложения».

я был в состоянии добраться до этой функции на код ниже:

Router.configure({ 
layoutTemplate: 'layout', 
}); 

Router.route('/', {name: 'welcome'}); 
Router.route('/pageOne', {name: 'pageOne'}); 
Router.route('/pageTwo', {name: 'pageTwo'}); 

var requireLogin = function() { 
if (! Meteor.user()) { 
if (Meteor.loggingIn()) { 
Router.go('welcome'); 
} else { 
this.render('welcomeButLogin'); 
} 
} else { 
this.next(); 
} 
} 

Router.onBeforeAction(requireLogin, {except: ['blah']}); 

Это работает, но я получаю предупреждение о:

Route dispatch never rendered. Did you forget to call this.next() in an onBeforeAction? 

Спасибо, что нашли время, любая обратная связь будет высоко оценена.

Gene.

+0

вам нужен this.next() после того, как this.render («welcomeButLogin») я верю. –

+0

Спасибо Ramsay Однако я сделал это изменение теперь с помощью this.next() после «welcomeButLogin», даже когда пользователь подписывается, у них все еще есть доступ к странице «pageOne». Спасибо за ваш комментарий. – Gene

ответ

0

Проблема решена.

Я изменил:

Router.onBeforeAction(requireLogin, {except: ['blah']}); 

к:

Router.onBeforeAction(requireLogin); 

за предложенный код на solarc на метеоритный форуме (спасибо solarc). Я не совсем понимаю, как это изменяет специфическое поведение маршрутизации, поскольку я интерпретировал, что «{except» ['blah']} будет означать все маршруты, так как у меня не было маршрута «бла». но сейчас он работает, как ожидалось, и я не получаю предупредительное сообщение.

Спасибо!

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