web-dev-qa-db-fra.com

AngularJS - Evénement UIC Router StateChangeSuccess non déclenché

J'utilise UI Router dans mon application angulaire. J'essaie d'intégrer les événements state change, mais ils ne déclenchent pas un changement d'état. Tout le reste fonctionne bien et il n'y a pas d'erreur dans la console. Je suis tombé sur des questions similaires, mais aucune des solutions ne m'a fonctionné

$ rootScope. $ on ("$ routeChangeSuccess) ou $ rootScope. $ on (" $ stateChangeSuccess) ne fonctionne pas avec ui-router (AngularJS)

angular + ui-router: $ stateChangeSuccess déclenché sur l'état b mais pas sur a.b

Voici mon code angulaire:

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



}());

Gauche sans indice. Je ne sais pas ce qui me manque.

19
hemu

Les événements StateChange sont obsolètes pour ui.router >= 1.0

pour le nouveau ui.router, utilisez ce qui suit

StateChangeSuccess

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

StateChangeStart

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

Cochez cette guide de migration pour plus d'informations

29
Sibiraj

Si vous utilisez le nouveau routeur ui (v1.0.0), les événements $stateChange* ne fonctionneront pas. Vous devez utiliser les hooks $transitions.on* à partir de maintenant.

Vous pouvez lire ici.

https://ui-router.github.io/docs/latest/modules/ng1_state_events.html

https://github.com/angular-ui/ui-router/issues/2720

14
phegde

Les événements $ state sont obsolètes pour la version angulaire> 1.0.0. maintenant pour l'événement de changement, nous devons utiliser $ transitions

se référer $ transitions à partir d'ici 

1
ojus kulkarni