当我在 FlowRouter 中添加 /admin 路由时,根路由被忽略
Root route is ignored when I add /admin route in FlowRouter
我的家乡路线单独使用时有效:
FlowRouter.route('/', {
name: 'home',
triggersEnter: [
function(context, redirect) {
var ExperimentsSub, handle, randomExperiment;
console.log('Home triggers');
ExperimentsSub = new SubsManager;
handle = ExperimentsSub.subscribe('randomExperiment');
if (handle.ready && Experiments.find.count) {
randomExperiment = Experiments.findOne;
return redirect('/experiment/' + randomExperiment._id);
}
}
],
action: function() {
console.log('Rendering home');
return BlazeLayout.render('layout', {
content: 'home'
});
}
});
但是当我添加我的 /admin
路由时,改为通过管理路由浏览到 /
路由。
FlowRouter.route('/admin', {
name: 'admin',
triggersEnter: [console.log('Admin triggers'), !Roles.userIsInRole(this.userId, ['admin']) ? FlowRouter.go(FlowRouter.path('login')) : void 0],
action: function() {
console.log('Rendering admin');
return BlazeLayout.render('layout', {
content: 'admin'
});
}
});
我知道这一点是因为我正在执行控制台日志记录。当我用两条路线冲浪到 /
时,控制台输出是 Rendering admin
。为什么会这样,我该如何解决?
问题出在我的管理路由触发器中。我没有分配函数数组。我不清楚为什么这会产生我看到的副作用,但更正它可以修复路线。
具有固定触发器 属性 的路由如下所示:
FlowRouter.route '/admin',
name: 'admin'
triggersEnter: [ (context, redirect) ->
console.log 'Admin triggers'
unless Roles.userIsInRole this.userId, ['admin']
redirect FlowRouter.path('login')
]
action: ->
console.log 'Rendering admin'
BlazeLayout.render 'layout', content: 'admin'
我的家乡路线单独使用时有效:
FlowRouter.route('/', {
name: 'home',
triggersEnter: [
function(context, redirect) {
var ExperimentsSub, handle, randomExperiment;
console.log('Home triggers');
ExperimentsSub = new SubsManager;
handle = ExperimentsSub.subscribe('randomExperiment');
if (handle.ready && Experiments.find.count) {
randomExperiment = Experiments.findOne;
return redirect('/experiment/' + randomExperiment._id);
}
}
],
action: function() {
console.log('Rendering home');
return BlazeLayout.render('layout', {
content: 'home'
});
}
});
但是当我添加我的 /admin
路由时,改为通过管理路由浏览到 /
路由。
FlowRouter.route('/admin', {
name: 'admin',
triggersEnter: [console.log('Admin triggers'), !Roles.userIsInRole(this.userId, ['admin']) ? FlowRouter.go(FlowRouter.path('login')) : void 0],
action: function() {
console.log('Rendering admin');
return BlazeLayout.render('layout', {
content: 'admin'
});
}
});
我知道这一点是因为我正在执行控制台日志记录。当我用两条路线冲浪到 /
时,控制台输出是 Rendering admin
。为什么会这样,我该如何解决?
问题出在我的管理路由触发器中。我没有分配函数数组。我不清楚为什么这会产生我看到的副作用,但更正它可以修复路线。
具有固定触发器 属性 的路由如下所示:
FlowRouter.route '/admin',
name: 'admin'
triggersEnter: [ (context, redirect) ->
console.log 'Admin triggers'
unless Roles.userIsInRole this.userId, ['admin']
redirect FlowRouter.path('login')
]
action: ->
console.log 'Rendering admin'
BlazeLayout.render 'layout', content: 'admin'