我在我的web应用程序中使用AngularJS的ui-router。我有一个看起来像这样的状态:

  $stateProvider.state('mystate',
    {
      url: '/mystate/{id:int}/:slug',
      params: {
        slug: {value: null, squash: true}
      },
      templateUrl: 'partials/mystate.html',
      controller: 'MyStateCtrl'
    }
  );


我可以这样链接到此状态:

<a ui-sref="mystate({id: 4, slug: 'myslug'})">Hello World</a>


它将转换为以下URL:/mystate/4/myslug/

我想构建与ui-sref相同的URL,但我希望在MyStateCtrl内部。我怎么做?在控制器中,我可以访问$stateParams.id$stateParams.slug。但是我需要调用什么函数才能将它们转换为该URL?

编辑:请注意:我不想转到结果URL。我只想拥有它供以后使用。

最佳答案

您可以使用功能$state.href()像ui-sref一样构造一个URL。您只需要提供可以从$stateParams获取的路线及其参数。

e.g. expect($state.href("about.person", { person: "bob" })).toEqual("/about/bob");


因此,在您的情况下:

$state.href("mystate", { id: $stateParams.id, slug: $stateParams.slug });


这是文档-$state.href()

10-07 18:04