2015-11-06 45 views
1

如何使用mithril.js及其路由系統在用戶尚未連接時將用戶重定向到登錄表單?mithril.js重定向用戶,如果沒有連接

我定義了一些路線:

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

但我想重定向/訂單等航線/如果用戶沒有登錄。

我需要把代碼放在控制器(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('....'); 
    } 
} 

回答

2

你應該把重定向到控制器。

在這種情況下,重定向在requestAnimationFrame之前調用,因此您被重定向到適當的控制器並呈現適當的視圖。

如果在視圖中重定向,您可能沒有正確重定向,無論如何都會呈現視圖。

相關問題