2017-05-14 83 views
0

我想知道如何處理兩種不好的路由。aurelia路由參數驗證

  • 一個是類型檢查。因爲我知道我的ID應該是一個數值
  • 二是當他們把不好的訂單號

對於類型檢查是處理這只是把支票在javascript中的最佳方式訂單模塊上的activate方法,如果失敗,則重定向到未找到的模塊?或者是有一些aurelia技巧來強制它是一個未知的路線或什麼...

類似的不好的訂單號,如果我做訂單上的提取,並且它沒有返回結果,我只是重定向爲好?

基本上只是想知道這是最好的做法還是有更好的方法來處理這個問題?

configureRouter(config: RouterConfiguration, router: Router) { 
    config.title = 'My Aurelia APP'; 
    config.map([ 
     { route: ['', "orders"], name: 'orders', moduleId: 'orders', nav: true, title: 'List Of Cool Stuff' }, 
     { route: ':id', moduleId: 'order', name: 'Order Info' }]); 
    this.router = router; 

    config.mapUnknownRoutes('not-found'); 
} 
+0

如何確定訂單不可用,而不是重定向,請顯示aurelia-dialog的實例,並說未找到訂單。點擊OK後,只需拒絕承諾,aurelia會將用戶重定向到以前的路線。 – janmvtrinidad

+0

我認爲,正如你已經提到的那樣,這應該在你的'order' ViewModel中進行管理 - 而不是在路由器中查詢訂單號,這不是它的設計目的。 – Tom

回答

1

對訂單號的檢查應作爲視圖模型代碼的一部分完成。我假設你無論如何都不知道訂單號是否有效,直到它碰到服務器。所以像你說的,在訂單視圖模型激活:

activate(params) { 
    let orderId = params.id; 
    return this.serverClient.get("api/orders", orderId).then(data => 
     { 
      //do order module code 
     }).fail(error => 
     { 
      this.router.navigate('unknown-error-route'); 
     }) 
    ); 
} 

我的猜測也就是如果訂單屬於該網站的其他用戶,您不希望用戶訪問他們的信息。所以我會拋出一個安全異常或任何在服務器端,然後在客戶端總是重定向到未知的錯誤路由或一些惡意的人不知道它是否失敗,因爲該命令存在並屬於別人或訂單根本不存在。或者您可以導航回去或其他東西。

0

我會驗證訂單號碼之前請求它是數字。這樣可以節省往返時間,並且可以在UI上顯示它無效。你也可以檢查範圍,以確保它是一個有效的範圍。

驗證可以在輸入時發送API請求。