Iron Router OnBefore Hook with Params URL 不调用函数
Iron Router OnBefore Hook with Params URL Not Calling Function
我想使用 iron router 来限制对页面的访问,但是 before 函数似乎不是 运行。
# Limit which challenges can seen to members.
isMemberHook = () ->
challenge = Challenges.findOne _id: @params._id
if Meteor.userId() in challenge.members
@next()
else
@redirect '/'
Router.onBeforeAction isMemberHook,
only: ['/challenge/:_id']
您必须小心考虑用户何时登录、未登录以及他们何时登录。
以下是我放置在 onBeforeAction
挂钩中的 requireLogin
函数的代码。
如果没有 Meteor 用户,请检查他们是否正在登录,如果是,则呈现加载模板。
var requireLogin = function() {
if (! Meteor.user()) {
if (Meteor.loggingIn()) {
this.render(this.loadingTemplate);
} else {
this.render('AdminLogin');
}
} else {
this.next();
}
};
Router.onBeforeAction(requireLogin, {only: ['AdminMain', 'postSubmit', 'appointmentsList', 'AppointmentShow']});
编辑
好的,事情是这样的:
https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#applying-hooks-to-specific-routes
文档中没有完全清楚的是数组在 onBeforeAction
中接受了什么样的参数
Router.onBeforeAction(requireLogin, {only: ['routeName', 'anotherRouteName']});
这是一组与钩子一起使用的路由:
this.route('/order', {
template: 'order',
name: 'order',
layoutTemplate: 'layout'
});
this.route('/order/:_id', {
template: 'order',
name: 'orderEdit',
layoutTemplate: 'layout',
data: function(){
var id = this.params._id;
alert(id);
}
});
var beforeHook = function(){
console.log("beforeHook run!");
alert("safsf");
};
Router.onBeforeAction(beforeHook, {only: ['orderEdit']});
事实证明,对于带有“/”的路由,您需要使用“.”。
所以在这种情况下我使用了:
only: ["challenge.:_id"]
问题已解决!
我想使用 iron router 来限制对页面的访问,但是 before 函数似乎不是 运行。
# Limit which challenges can seen to members.
isMemberHook = () ->
challenge = Challenges.findOne _id: @params._id
if Meteor.userId() in challenge.members
@next()
else
@redirect '/'
Router.onBeforeAction isMemberHook,
only: ['/challenge/:_id']
您必须小心考虑用户何时登录、未登录以及他们何时登录。
以下是我放置在 onBeforeAction
挂钩中的 requireLogin
函数的代码。
如果没有 Meteor 用户,请检查他们是否正在登录,如果是,则呈现加载模板。
var requireLogin = function() {
if (! Meteor.user()) {
if (Meteor.loggingIn()) {
this.render(this.loadingTemplate);
} else {
this.render('AdminLogin');
}
} else {
this.next();
}
};
Router.onBeforeAction(requireLogin, {only: ['AdminMain', 'postSubmit', 'appointmentsList', 'AppointmentShow']});
编辑
好的,事情是这样的:
https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#applying-hooks-to-specific-routes
文档中没有完全清楚的是数组在 onBeforeAction
Router.onBeforeAction(requireLogin, {only: ['routeName', 'anotherRouteName']});
这是一组与钩子一起使用的路由:
this.route('/order', {
template: 'order',
name: 'order',
layoutTemplate: 'layout'
});
this.route('/order/:_id', {
template: 'order',
name: 'orderEdit',
layoutTemplate: 'layout',
data: function(){
var id = this.params._id;
alert(id);
}
});
var beforeHook = function(){
console.log("beforeHook run!");
alert("safsf");
};
Router.onBeforeAction(beforeHook, {only: ['orderEdit']});
事实证明,对于带有“/”的路由,您需要使用“.”。
所以在这种情况下我使用了:
only: ["challenge.:_id"]
问题已解决!