Aurelia-Router:使用Router修改VM的路由参数和地址栏

时间:2016-08-31 08:43:51

标签: aurelia aurelia-router

我想在没有路由的情况下更新地址栏中的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

支持此功能

谢谢! /麦克

1 个答案:

答案 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
        );
    }
}

来自documentation hub

  

navigateToRoute(route: string, params?: any, options?: any): boolean

     

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

     

PARAMS

     
      
  • route: string - 生成导航位置时要使用的路径的名称。
  •   
  • params?: any - 填充路径模式时要使用的路径参数。
  •   
  • options?: any - 导航选项。
  •   

使用options,您可以控制history is updated

的方式
  • trigger: false - 阻止触发路由器导航管道
  • replace: true - 使用提供的路线(重写历史记录)替换历史记录中的当前网址,因此无法通过浏览器返回功能触发