我在我的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()