Переключение с ng-route на ui-router $routeChangeSuccess не работает

$scope.$on("$routeChangeSuccess", function (event, next, current) {
                switch (next.originalPath) {
                    case "/ac" :
                        $scope.currentTab = 1;
                        break;
                    case "/bp/:type?/:tab?":
                        $scope.currentTab = 2;
                        break;
                    case "/bs":
                        $scope.currentTab = 3;
                        break;
                    default :
                        $scope.currentTab = 1;
                        break;
                }
            });

Я хочу изменить приведенный выше код с ng-route на ui-router. Я изменил другие на stateProvider и stateParams, но не знаю, как изменится $routeChangeSuccess, это на $stateChangeSucess?

4 ответа

Решение
$rootScope.$on('$stateChangeSuccess', 
function(event, toState, toParams, fromState, fromParams){ ... })

Вы должны использовать $stateChangeSuccess вместо $routeChangeSuccess согласно событиям изменения состояния.

$stateChangeStart - уволен, когда начинается переход.

$rootScope.$on("$stateChangeSuccess", function () {

            });
$scope.$on("$stateChangeSuccess", function (event, toState, toParams, fromState, fromParams) {
                switch ( toState.url ) {
                    case "/ac" :
                        $scope.currentTab = 1;
                        break;
                    case "/bp":
                        $scope.currentTab = 2;
                        break;
                    case "/bs":
                        $scope.currentTab = 3;
                        break;
                    default :
                        $scope.currentTab = 1;
                        break;
                }
            });

toState.url выдаст измененный URL и может выполнять действия, связанные с этим.

Да, $stateChangeSuccess. Смотрите больше здесь https://github.com/angular-ui/ui-router/wiki

Другие вопросы по тегам