2017-05-14 142 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请求。