Aurelia路由config.map中href选项中的动态参数

问题描述 投票:3回答:2

这似乎是一个非常简单的问题,但它让我发疯...

有谁知道如何在href路由配置选项中指定dynamic:id参数?

遗憾的是,以下情况不起作用:

    config.map([
        // ... default parameterless routing here
        {
            route:[':id/request'],
            moduleId:'processes/bdd/request/request',
            name:'Request', title:'Request', href:`#/bdd/request/${id}/request`, settings:{type:'Request', icon:''}, nav:true,
        },
        {
            route:[':id/requestAuth'],
            moduleId:'processes/bdd/request/requestauthorization',
            name:'RequestAuthorization', title:'Request Authorization', href:`#/bdd/request/${id}/requestAuth`, settings:{type:'Request', icon:''}, nav:true,
        },
        // ... some additional mappings here
    ]);
aurelia aurelia-router
2个回答
5
投票

href属性是静态的。如果要使用此路由为链接生成路由,可以使用route-href自定义属性,如下所示:

 route-href="route: request; params.bind: { id: someProp }"

请注意,我将路由名称更改为camelCase(全部小写,因为它是一个单词),以匹配路由命名约定。


0
投票

我有一个类似的用例,我可以通过向路由器添加一个管道步骤来实现这一点,该路由器可以动态改变配置。

我的用例可能有点不同,因为我只希望当路线处于活动状态时项目出现在导航栏中 - 假设我有路线/abc/def/:id/ghi - 当活动路线是ABC或GHI时,仅这些项目将显示在导航栏中,但当活动路线为DEF时,它应显示在导航栏中,单击它应该会导致您当前正在查看的相同DEF ID。因此,我的路线配置包括一个设置,指示路线只有在活动路线时才会出现在导航栏中。

以下是我的实际configureRouter函数的有趣部分:

configureRouter(config, router) {
  config.addPreActivateStep(Preactivate); // explained below
  config.map([
    // some routes
    { route: 'patients/:patientId', name: 'patient-master',
      moduleId: 'patients-and-cases/patient-master/patient-master',
      title: 'Patient', nav: true, settings: { renderOnlyWhenActive: true },
      href: '#' // it doesn't matter what this is
    },
    // more routes
  ]);
}

这里是Preactivate类,它将href设置为preactivate:

class Preactivate {
  run(routingContext, next) {
    routingContext.config.href = routingContext.fragment;
    return next();
  }
}

如果,与我不同,您希望它始终显示在导航栏中,这仍然有效 - href将保持设置为路径处于活动状态时设置的最后一项。在这种情况下,您可能希望将其初始化为某个有意义的默认值。

© www.soinside.com 2019 - 2024. All rights reserved.