我想在没有路由的情况下更新地址栏中的url-params。 但我不确定如何使用Aurelia-router从视图模型中做到这一点。
在我的情况下,我在URL中发送ID,这些ID由view-model的activate-method拾取。
路线如下: http://localhost:3000/#/test/products?0=2599037842&1=2599080552
然后我希望能够从网址中删除ID而不重新激活视图模型,网址结果例如: http://localhost:3000/#/test/products?0=2599037842
希望Aurelia-router
支持此功能谢谢! /麦克
答案 0 :(得分:18)
是的,您可以使用router.navigateToRoute()
方法执行此操作。 navigateToRoute
有其他参数。使用options
(第三个)参数修改导航的完成方式。
示例:
import {inject} from 'aurelia-framework';
import {Router} from 'aurelia-router';
@inject(Router)
export class Products {
constructor(router) {
this.router = router;
}
activate(params) {
// TODO: Check your params here and do navigate according to values
this.router.navigateToRoute(
this.router.currentInstruction.config.name, // current route name
{ '0': params['0'] }, // route parameters object
{ trigger: false, replace: true } // options
);
}
}
navigateToRoute(route: string, params?: any, options?: any): boolean
导航到与指定的路线和参数对应的新位置。
PARAMS
route: string
- 生成导航位置时要使用的路径的名称。params?: any
- 填充路径模式时要使用的路径参数。options?: any
- 导航选项。
使用options
,您可以控制history is updated。
trigger: false
- 阻止触发路由器导航管道replace: true
- 使用提供的路线(重写历史记录)替换历史记录中的当前网址,因此无法通过浏览器返回功能触发