如果没有连接,mithril.js重定向用户

时间:2015-11-06 20:03:23

标签: mithril.js

当用户尚未连接时,如何使用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('....');
     }
}

1 个答案:

答案 0 :(得分:2)

您应该将重定向放到控制器上。

在这种情况下,在requestAnimationFrame之前调用重定向,因此您将被重定向到适当的控制器并呈现适当的视图。

如果在视图中重定向,您可能无法正确重定向,无论如何都会呈现视图。