当用户尚未连接时,如何使用mithril.js及其路由系统将我的用户重定向到登录表单?
我定义了一些路线:
m.route.mode = 'search';
m.route(document.getElementById('app'), "/", {
'/': LoginForm,
'/orders': OrderList,
'/order/new': OrderForm,
'/order/:orderId': OrderForm
});
但我想将/ order和其他路由重定向到/如果用户没有登录。
我是否需要将代码放在控制器中(OrderList.controller和OrderForm.controller)?或者在视图中(OrderList.view和OrderForm.view)?
window.OrderForm = {
controller: function () {
var ctrl = this
if (/* user not logged */) {
m.route('/')
return;
}
// controller code
},
view: function(ctrl) {
if (/* user not logged */) {
m.route('/')
return;
}
// view code
return m('....');
}
}
答案 0 :(得分:2)
您应该将重定向放到控制器上。
在这种情况下,在requestAnimationFrame之前调用重定向,因此您将被重定向到适当的控制器并呈现适当的视图。
如果在视图中重定向,您可能无法正确重定向,无论如何都会呈现视图。