Aurelia Routing config.map中href选项中的动态参数
这似乎是一个非常简单的问题,但它让我发疯 有人知道我如何在href路由配置选项中指定动态:id参数吗 不幸的是,以下方法不起作用:Aurelia Routing config.map中href选项中的动态参数,aurelia,Aurelia,这似乎是一个非常简单的问题,但它让我发疯 有人知道我如何在href路由配置选项中指定动态:id参数吗 不幸的是,以下方法不起作用: config.map([ // ... default parameterless routing here { route:[':id/request'], moduleId:'processes/bdd/request/request', name:'
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
]);
href
属性是静态的。如果要使用此路由为链接生成路由,可以使用如下的route href
自定义属性:
route-href="route: request; params.bind: { id: someProp }"
请注意,我将路由名称更改为camelCase(因为这里只有一个单词,所以全部小写),以匹配路由命名约定。我有一个类似的用例,我可以通过向路由器添加一个管道步骤来动态更改配置,从而实现这一点 我的用例可能有点不同,因为我只希望当路由处于活动状态时,项目出现在导航栏中——比如我有路由
/abc
,/def/:id
,和/ghi
——当活动路由为abc或ghi时,只有这些项目会出现在导航栏中,但当活动路由为def时,它应该出现在导航栏中,单击它应该会得到与您当前查看的相同的DEF ID。因此,我的路线配置包括一个设置,该设置指示只有当路线为活动路线时,该路线才应出现在导航栏中
以下是我实际配置路由器功能的有趣部分:
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将保持设置为路由激活时最后设置的内容。在这种情况下,您可能希望将其初始化为某种有意义的默认值。但是如果我删除路由配置中的href属性?如果我试图删除它,会出现以下错误:
error[app router]error:Invalid route config for“:id?/requestAuth”:动态路由必须指定一个“href:”以包含在导航模型中。
这是因为您设置了nav:true
属性。如果您不打算以导航栏或类似的形式使用此路由,则删除该路由,路由器将停止抱怨。但是如果我确实想在导航栏中使用它,该怎么办?然后您需要为路由指定一个静态href
值。想想该值将如何使用。它被用来建造导航栏。导航栏中的链接是静态的,而不是动态的。您必须为该路由提供“id”的“默认”值。如果默认值没有意义,那么该路线不应该是导航栏的一部分。