使用状态参数转换到不同的状态

Transition to different state with state params

本文关键字:状态 转换 参数      更新时间:2023-09-26

嗨,我是角度路由的新手,想知道如何通过控制器转换到不同的状态。

我知道我必须注入$state服务,但我不清楚如何使用该服务的转换方法。

这是我在控制器代码中尝试转换的内容,但它不起作用:((我也尝试过$stateService.go(…),但没有成功)

$stateService.transitionTo("teststate({ path: 'Test.TestState' })");

这是我的状态定义

    $stateProvider
        .state("teststate",
        {
            url: '/:path',
            templateUrl: (stateParams) => {
                return '/Templates?path=' + stateParams.path;
            },
        })

任何帮助都将不胜感激!

感谢

你是这个意思吗?

$state.go("teststate", { path: 'Test.TestState' });  

文档

它可以用两种方法来完成,比如:

1-使用$state

app.controller("fruitsCtrl", function ($scope, $state) {
    //goto vegetables page with params
    $state.go('vegetables', {name:"carrot"});
    // or other possibility
    $state.transitionTo('vegetables', {name:"carrot"});
});

2-使用ui sref

<nav>
    <ul>
        <li><a ui-sref="fruits({name: 'mango'})">Fruits</a></li>
        <li><a ui-sref="vegetables({name: 'potato'})">Vegetables</a></li>     
    </ul>
</nav> 

假定路线:

$stateProvider
                .state('fruits', {
                    url:"/fruits/:name",
                    templateUrl: "views/fruits.html",
                    controller: "fruitsCtrl"
                })
                .state('vegetables', {
                    url:"/vegetables/:name",
                    templateUrl: "views/vegetables.html",
                    controller: "vegetablesCtrl"
                });

乐于助人!

如下所示。

$stateProvider.state('contacts', {
   url: '/:path',
   templateUrl: function ($stateParams){
     return '/Templates?path=' + $stateParams.path;
   }
 })

转换到新状态的方便方法$state.go,内部调用$state.transitionTo。我更喜欢使用$state.go而不是$scope.transitionTo

$state.go("teststate",{ path: 'Test.TestState' });