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é
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.
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
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
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