Я использую Meteor с FlowRouter, и я получаю странное поведение. Мне интересно, если я просто принципиально не понимаю чего-то. У меня есть следующий код в client/route.js
:Триггеры Meteor FlowRouter Начало запуска слишком рано
"use strict";
FlowRouter.route('/', {
name: 'home',
action: function() {
BlazeLayout.render('main', {main: "homePage"});
}
});
FlowRouter.route('/admin', {
name: 'admin',
triggersEnter: [isUserLoggedIn],
action: function() {
BlazeLayout.render('main', {main: "admin"});
}
});
function isUserLoggedIn() {
console.log("Worked");
if (Meteor.userId()) {
route = FlowRouter.current();
} else {
FlowRouter.go("home");
}
}
Я бегу meteor
и я хожу в localhost:3000
и я смотрю на консоли, я вижу «Работали» означает, что функция isUserLoggedIn срабатывала. Я НЕ нажал на админ или пошел на localhost:3000/admin
. Только на верхний уровень. Почему была вызвана функция isUserLoggedIn, когда я не пошел на маршрут /admin
?
Редактировать 1: Казалось бы, мой упрощенный пример действительно работает очень хорошо. Реальная проблема на самом деле немного больше, как это:
"use strict";
FlowRouter.route('/', {
name: 'home',
action: function() {
BlazeLayout.render('main', {main: "homePage"});
}
});
FlowRouter.route('/admin', {
name: 'admin',
triggersEnter: [isUserLoggedIn(role)],
action: function() {
BlazeLayout.render('main', {main: "admin"});
}
});
function isUserLoggedIn(role) {
console.log("Worked");
if (Meteor.userId() && Role.userIsInRole(role)) {
route = FlowRouter.current();
} else {
FlowRouter.go("home");
}
}
Передача параметров через triggersEnter не представляется возможным (или я не в курсе о том, как заставить ее работать должным образом). Есть ли способ отправить параметр через triggersEnter?
К началу! Единственный способ работать для меня, но с обновлением в строке 3: 'if (Meteor.userId() && Roles.userIsInRole (Meteor.userId(), role)) {' – Arthur
Спасибо, что указали это. Я исправил. Рад, что он работает –