mithril.js 如果未连接则重定向用户

mithril.js redirect user if not connected

如何在用户尚未连接时使用 mithril.js 及其路由系统将我的用户重定向到登录表单?

我定义了一些路由:

m.route.mode = 'search';
m.route(document.getElementById('app'), "/", {
    '/': LoginForm,
    '/orders': OrderList,
    '/order/new': OrderForm,
    '/order/:orderId': OrderForm
});

但是我想重定向 /orders 和其他路由到 / 如果用户没有登录。

我是否需要将代码放入控制器(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('....');
     }
}

你应该把重定向到控制器。

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

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