2014-10-11 87 views
0

铁路由器路径控制器我试图加载依赖于用户登录状态像这样不同的模板:铁路由器:路由器控制器来电Meteor.user()返回错误

Router.map(function() { 
    this.route('start', { 
    path: '/', 
    controller: StartController 
    }); 
}) 

StartController = RouteController.extend({ 
    template: Meteor.user() ? 'home' : 'landing', 
    waitOn: function() { 
     return [Meteor.subscribe('something')] 
    } 
}); 

但是我得到异常在控制台中: “...错误:只能在方法调用中调用Meteor.userId。在发布函数中使用this.userId ...”

我真的不明白那个错误意味着什么,我在这里做错了。

回答

1

您发布的代码在服务器上执行。在服务器上,Meteor.user()只能在方法中执行。

但是,即使此错误不存在,您的代码仍然无法正常工作。 Meteor.user() ? 'home' : 'landing'将在开始时执行一次(当用户可能未登录时),并且在用户登录/注销时不会被重新执行。

阅读this在文档中,这是做你想做的。