Aurelia路由器:使用路由器从VM修改路由参数和地址栏

Aurelia路由器:使用路由器从VM修改路由参数和地址栏,aurelia,Aurelia,我想更新地址栏中的url参数而不进行路由。 但我不确定如何从视图模型中使用Aurelia路由器实现这一点 在我的例子中,我在url中发送ID,该url由视图模型的activate方法获取 路线如下所示: 然后我希望能够在不重新激活视图模型的情况下从url中删除ID,url结果示例: 希望Aurelia路由器对此有支持 谢谢! /Mike是的,您可以使用router.navigateToRoute()方法来完成导航路线具有其他参数。使用选项(第三个)参数修改导航方式 例如: 从“aurelia

我想更新地址栏中的url参数而不进行路由。 但我不确定如何从视图模型中使用Aurelia路由器实现这一点

在我的例子中,我在url中发送ID,该url由视图模型的activate方法获取

路线如下所示:

然后我希望能够在不重新激活视图模型的情况下从url中删除ID,url结果示例:

希望Aurelia路由器对此有支持

谢谢!
/Mike

是的,您可以使用
router.navigateToRoute()
方法来完成<代码>导航路线具有其他参数。使用
选项
(第三个)参数修改导航方式

例如:

从“aurelia框架”导入{inject};
从'aurelia Router'导入{Router};
@注入(路由器)
出口类产品{
建造商(路由器){
this.router=路由器;
}
激活(参数){
//TODO:在此处检查参数,并根据值进行导航
这是一个路由器(
this.router.currentInstruction.config.name,//当前路由名称
{0':参数['0']},//路由参数对象
{trigger:false,replace:true}//options
);
}
}
发件人:

navigateToRoute(路由:字符串,参数?:任意,选项?:任意):布尔值

导航到与指定的路由和参数相对应的新位置

Params

  • 路线:字符串
    -生成导航位置时要使用的路线名称
  • params?:任何
    -填充路线模式时使用的路线参数
  • 选项?:任何
    -导航选项
使用
选项
可以控制

  • trigger:false
    -防止触发路由器导航管道
  • replace:true
    -将历史记录中的当前URL替换为提供的路由(重写历史记录),因此浏览器返回功能不会触发该URL

效果很好-谢谢!我发现的一个改进是将“products”字符串替换为“this.router.currentInstruction.config.name”,以编程方式获取当前路由名称。您可以将此修改添加到您的答案中。:)伟大的当然,如果您需要导航到当前路线,这将起作用。答案修改了。我发现currentInstruction在我的情况下不是正确的路径(或者事情是否发生了变化?),但作为参数传递给activate方法的路径起了作用。即激活(参数、路线、导航指令)