流星铁路由器 - 为什么我的应用总是在刷新或网址加载时转到基本网址

时间:2014-01-29 19:25:57

标签: meteor iron-router

我有一个使用铁路由器的流星应用程序。每次刷新浏览器或输入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'而不是'/',则不会发生此问题,并且它会按照我的预期运行。但是,当我这样做时,我收到一个控制台错误消息,没有定义'/'。它似乎没有破坏任何东西,但我讨厌在控制台中出错。

我也尝试将'任务'地图移到底部,以防它首先匹配到这个并且总是去那里,但这并没有什么区别。

知道为什么会这样吗?

谢谢!

1 个答案:

答案 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: '/', 
});