我有一个使用铁路由器的流星应用程序。每次刷新浏览器或输入http://localhost:3000/gigs
这样的网址时,我的应用都会刷新回http://localhost:3000
的基本网址
这是我的router.js代码
var requireLogin = function() {
if (!Meteor.user() && !Meteor.loggingIn()) {
Router.go('signIn');
this.stop();
}
};
Router.configure({ loadingTemplate: 'loading' });
Router.before(requireLogin, {only: ['tasks', 'gigs']});
Router.map(function() {
this.route('tasks', {
path: '/',
waitOn: function() { return [ Meteor.subscribe('projects'), Meteor.subscribe('tasks') ] },
layoutTemplate: 'twoColMenuLayout',
template: 'tasksList',
yieldTemplates: {l
'taskDetail': {to: 'rightTemplate'}
},
data: {
moduleName: 'projects'
}
});
this.route('gigs', {
path: '/gigs',
waitOn: function() { return [ Meteor.subscribe('gigs') ] },
layoutTemplate: 'twoColMenuLayout',
template: 'gigsList',
yieldTemplates: {
'gigDetail': {to: 'rightTemplate'}
},
data: {
moduleName: 'gigs'
}
});
this.route('gigSubmit', {
path: '/gig-submit',
layoutTemplate: 'oneColMenuLayout',
template: 'gigSubmit',
data: {
pageTitle: 'New Gig'
}
});
this.route('signIn', {
path: '/signIn',
layoutTemplate: 'blankLayout',
template: 'signIn'
});
});
奇怪的是,如果我将'tasks'路径更改为'/ tasks'而不是'/',则不会发生此问题,并且它会按照我的预期运行。但是,当我这样做时,我收到一个控制台错误消息,没有定义'/'。它似乎没有破坏任何东西,但我讨厌在控制台中出错。
我也尝试将'任务'地图移到底部,以防它首先匹配到这个并且总是去那里,但这并没有什么区别。
知道为什么会这样吗?
谢谢!
答案 0 :(得分:0)
我最近才遇到这个。您需要订购从开始时最深处到底部最浅层的路线:
this.route('someDeepRoute', {
path: '/deep/route',
});
this.route('gigs', {
path: '/gigs',
});
this.route('gigSubmit', {
path: '/gig-submit',
});
this.route('signIn', {
path: '/signIn',
});
this.route('tasks', {
path: '/',
});