Подтвердить что ты не робот

Angular Состояние JS-UI-маршрутизатора Состояние событияChangeSuccess не срабатывает

Я использую UI Router в приложении angular. Я пытаюсь интегрировать события state change, но они не стреляют в изменение состояния. Все остальное работает нормально, и в консоли нет ошибок. Я столкнулся с подобными вопросами, но ни одно из решений не помогло мне:

$rootScope. $on ( "$routeChangeSuccess" ) или $rootScope. $on ( "$stateChangeSuccess" ) не работает при использовании ui-router (AngularJS)

angular + ui-router: $stateChangeSuccess запускается в состоянии b, но не на a.b

Ниже приведен мой код angular:

(function() {

    angular.module("bootdemo", [
        "ngResource",       
        "ui.router",
        "bootdemo.core",
        "bootdemo.index"        
    ])
    .run(function ($rootScope, $location, $state, $stateParams) {

        $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){ 
            alert("root change success");
        })

        $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams, options){ 
            alert("root change start");
        })

        $rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error){ 
            alert("root change error");
        })
    })
    .config(function($stateProvider, $urlRouterProvider){
        $urlRouterProvider.otherwise('/');
        $stateProvider
            .state('index', {
                url: "/",
                templateUrl: '/index/templates/welcome.html',
                controller: 'IndexController as vm' 
            })
            .state('login', {
                url: "/login",
                templateUrl: '/index/templates/login.html',
                controller: 'LoginController as ctrl'   
            })
            .state('home', {
                url: "/home",
                templateUrl: '/index/templates/home.html',
                controller: 'HomeController as ctrl'    
        })
    });



}());

Слева нет подсказки. Я не уверен, что мне не хватает.

4b9b3361

Ответ 2

События StateChange устарели для ui.router >= 1.0

для нового ui.router используйте следующий

StateChageSuccess

$transitions.onSuccess({}, function() {
  console.log("statechange success");
});

StateChangeStart

$transitions.onStart({}, function(trans) {
 console.log("statechange start");
});

Подробнее об этом руководство по миграции

Ответ 3

События

$state устарели для angular версии > 1.0.0. теперь для события изменения мы должны использовать $переходы

отсылайте $переходы отсюда