[英]How to use AngularJS ui-router to build same URL as <ui-sref> in controller instead of HTML?
我在我的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注入MyStateCtrl的依賴項,並使用$state.go(to [, toParams] [, options])
函數導航到目標URL。
例如:
class MainController {
constructor($scope, $state) {
'ngInject';
this.scope = $scope;
this.state = $state;
}
navigateToAState() {
this.state.go('mystate',{id: 4, slug: 'myslug'})
}
}
export default MainController;
一種url生成方法,該方法返回填充有給定參數的給定狀態的已編譯url。
Example : expect($state.href("about.person", { person: "bob" })).toEqual("/about/bob");
你可以用這個
$state.href ('mystate',{id: 4, slug: 'myslug'});
您可以像ui-sref一樣使用$state.href()
函數構造一個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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.