AngularDart路由:可选参数

时间:2014-04-14 14:27:21

标签: dart angular-dart angular-routing

是否可以在不设置辅助路线的情况下设置可选路线参数?我想建立一个非常简单的REST类型接口,其路径定义如下:

reports/:reportType/:reportId

导航到reports/:reportType将允许列出指定类型的所有已完成报告,并导航到完整路径将显示该特定报告。第一部分我工作正常,但我无法确定如何使最后一段可选。

使用以下路径定义,仅在指定所有参数时调用enter方法:

void routesInit(Router router, RouteViewFactory view) {
  view.configure({
    'report' : ngRoute(
        // :rptId cannot be null (aka not provided)
        path: '/reports/:rptType/:rptId',
        enter: (RouteEnterEvent e) {
          print(e.parameters);
        })
  });
}

我已尝试围绕:rptId的标准类型可选括号,例如父{4}}和方括号/reports/:rptType(/:rptId),但无济于事。

我还尝试过以下方法:

/reports/:rptType(/:rptId)

以上问题是void routesInit(Router router, RouteViewFactory view) { view.configure({ 'report' : ngRoute( // :rptId cannot be null (aka not provided) path: '/reports/:rptType', enter: (RouteEnterEvent e) { print(e.parameters); }, mount: { 'report_type' : ngRoute( path: '/:rptId', enter: (RouteEnterEvent e) { print(e.parameters); print(e.route.parent.parameters); }) }) }); } report输入函数都被调用,所以我无法在那里正确设置视图,因为我需要在{{{}}中进行某种检查{1}} report_type路由的功能,用于检测是否存在子路由,我也不确定如何实现。

是否有更简单的方法来指定可选参数,还是应该完全更改我想要用来缓解嵌套/子参数的路径? (E.G。:使用类似enterreport

的内容

1 个答案:

答案 0 :(得分:1)

这种情况下的解决方案非常简单。我正在设计解决方案。简单的修复,只需使用两个顶级路线。

void routesInit(Router router, RouteViewFactory view) {
  view.configure({
    'report' : ngRoute(
        path: '/reports/:rptType',
        enter: (RouteEnterEvent e) {
          print(e.parameters);
      }),
    'report_id': ngRoute(
        path: '/reports/:rptType/:rptId',
        enter: (RouteEnterEvent e) {
          print(e.parameters);
        })
  });
}