AngularJS-Ui路由器-自动从根状态重定向

AngularJS-Ui路由器-自动从根状态重定向,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我想简单地重定向从/到/商店每一个人键入根。我试过在控制器中使用$state.go,但没有成功。我想在没有$urlRouterProvider的情况下完成它。否则,我的web中也有没有路由的URL。有什么办法吗?提前谢谢 app.config(function($stateProvider, $urlRouterProvider) { $stateProvider.state('root', { url: "/", controller: { funct

我想简单地重定向从/到/商店每一个人键入根。我试过在控制器中使用$state.go,但没有成功。我想在没有$urlRouterProvider的情况下完成它。否则,我的web中也有没有路由的URL。有什么办法吗?提前谢谢

 app.config(function($stateProvider, $urlRouterProvider) {
 $stateProvider.state('root', {
     url: "/",
     controller: {
         function() {
             $state.go('shop')
         }
     }
 }).state('shop', {
     url: "/shop",
     controller: 'myCtrl',
     templateUrl: "/shopcontent.jsp"
 })
});

您的控制器应如下所示:

 controller: function($state) {
               if ($state.current.name == 'root') { 
                  $state.go('shop'); 
               }
             }

您需要在控制器函数中注入$state。

您的控制器应如下所示:

 controller: function($state) {
               if ($state.current.name == 'root') { 
                  $state.go('shop'); 
               }
             }
您需要在控制器函数中注入$state。

尝试以下操作:

在run函数中,向$stateChangeStart添加一个侦听器,以便状态发生更改时,它将检查它是否为root,然后将更改为shop:

        .run(["$injector", "$rootScope",
                    function($injector, $rootScop) {
                        $rootScope.$state = $injector.get("$state");
                          //-----Track State Change for request Token -------------
                        $rootScope.$stateChangeStart = [];
                        $rootScope.$on("$stateChangeStart",
                            function(event, toState, toParams, fromState, fromParams) {
                                if (fromState.name == "root") {
                                   $state.go('shop')
                               }
                                $rootScope.$stateChangeStart.push({
                                    toState: toState,
                                    toParams: toParams,
                                    fromState: fromState,
                                    fromParams: fromParams
                                });
                            });
                    }
                ]);
试试这个:

在run函数中,向$stateChangeStart添加一个侦听器,以便状态发生更改时,它将检查它是否为root,然后将更改为shop:

        .run(["$injector", "$rootScope",
                    function($injector, $rootScop) {
                        $rootScope.$state = $injector.get("$state");
                          //-----Track State Change for request Token -------------
                        $rootScope.$stateChangeStart = [];
                        $rootScope.$on("$stateChangeStart",
                            function(event, toState, toParams, fromState, fromParams) {
                                if (fromState.name == "root") {
                                   $state.go('shop')
                               }
                                $rootScope.$stateChangeStart.push({
                                    toState: toState,
                                    toParams: toParams,
                                    fromState: fromState,
                                    fromParams: fromParams
                                });
                            });
                    }
                ]);
签出重定向到状态定义属性

从ui路由器文档:

同步或异步地将转换重定向到其他位置 状态/参数

如果定义了此属性,将直接转换到此状态 将根据属性的值重定向

例如:

完整的工作示例:

如果要将任何未知路径重定向到/shop,可以使用以下方法:

$urlRouterProvider.otherwise('/shop');
签出重定向到状态定义属性

从ui路由器文档:

同步或异步地将转换重定向到其他位置 状态/参数

如果定义了此属性,将直接转换到此状态 将根据属性的值重定向

例如:

完整的工作示例:

如果要将任何未知路径重定向到/shop,可以使用以下方法:

$urlRouterProvider.otherwise('/shop');

当有人键入root并使用$state.go转到所需页面时,在控制器中调用函数。别忘了在控制器中注入$state我的问题是如何在我的控制器中检测某人何时进入/您可以使用$state.current.name获取当前状态名称。在本例中,它将为您提供“root”。我在控制器中尝试了类似的操作,但似乎不起作用。我确保$state被注入函数{if$state.current.name='root'{$state.go'shop';};当有人键入root并使用$state.go转到所需页面时,在控制器中调用函数。别忘了在控制器中注入$state我的问题是如何在我的控制器中检测某人何时进入/您可以使用$state.current.name获取当前状态名称。在本例中,它将为您提供“root”。我在控制器中尝试了类似的操作,但似乎不起作用。我确保$state被注入函数{if$state.current.name='root'{$state.go'shop';};我将另一个标记为正确,因为方法更简单,但感谢您的洞察力!我将另一个标记为正确,因为方法更简单,但感谢您的洞察力!