【问题标题】:Transition to different state with state params使用状态参数转换到不同的状态
【发布时间】:2015-05-20 07:24:20
【问题描述】:

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

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

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

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

这是我的状态定义

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

任何帮助将不胜感激!

谢谢

【问题讨论】:

    标签: javascript asp.net angularjs angular-ui-router


    【解决方案1】:

    可以通过以下两种方式完成:

    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"
                    });
    

    乐于助人!

    【讨论】:

      【解决方案2】:

      如下所示。

      $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' });
      

      【讨论】:

        【解决方案3】:

        你是这个意思吗?

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

        Documentation

        【讨论】:

        • 工作就像一个魅力!谢谢
        猜你喜欢
        • 1970-01-01
        • 2021-06-19
        • 2023-03-27
        • 2016-04-25
        • 1970-01-01
        • 1970-01-01
        • 2011-10-21
        • 2018-12-02
        • 1970-01-01
        相关资源
        最近更新 更多