【发布时间】:2015-12-12 09:09:46
【问题描述】:
我有一个检查用户是否登录的函数,它看起来像这样:
var requireLogin = function () {
if (! Meteor.user()) {
if (Meteor.loggingIn()) {
this.render(this.loadingTemplate);
} else {
this.render('accessDenied');
}
} else {
this.next();
}
};
这是一个简单的功能,当我在这样的钩子上使用它时它就可以工作:
Router.onBeforeAction(requireLogin, {only: 'postSubmit'});
但是,当我尝试在这样的扩展路由控制器中调用它时:
LogInController = RouteController.extend({
onBeforeAction: function () {
requireLogin();
}
});
它不起作用。但是我可以将函数的上下文粘贴到登录控制器中的 onBeforeAction 中,它会起作用。
LogInController = RouteController.extend({
onBeforeAction: function () {
if (! Meteor.user()) {
if (Meteor.loggingIn()) {
this.render(this.loadingTemplate);
} else {
this.render('accessDenied');
}
} else {
this.next();
}
}
});
所以我需要做什么?我需要将 this 的值传递给 requireLogin 函数还是有更聪明的方法?
【问题讨论】:
标签: meteor routes this iron-router