在Iron路由器路径控制器中我尝试根据用户登录状态加载不同的模板,如下所示:
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 ..."
我真的不明白这个错误意味着什么,以及我在这里做错了什么。
答案 0 :(得分:1)
您发布的代码在服务器上执行。在服务器上,Meteor.user()
只能在方法中执行。
但是,即使此错误不存在,您的代码也无法按照您的意愿运行。 Meteor.user() ? 'home' : 'landing'
将在开头执行一次(当用户可能没有登录时),并且在用户登录/退出时不会被重新执行。
在文档中阅读this,这有点像你想做的那样。