it-swarm.com.de

AngularJS - UI Router stateChangeSuccess-Ereignis wird nicht ausgelöst

Ich verwende UI Router in meiner Winkel-App. Ich versuche, state change-Ereignisse zu integrieren, aber sie werden nicht vom Statuswechsel ausgelöst. Alles andere funktioniert gut und es gibt keine Fehler in der Konsole. Ich bin auf folgende ähnliche Fragen gestoßen, aber keine der Lösungen funktionierte für mich:

$ rootScope. $ on ("$ routeChangeSuccess) oder $ rootScope. $ on (" $ stateChangeSuccess) funktioniert nicht bei Verwendung von ui-router (AngularJS)

angle + ui-router: $ stateChangeSuccess wird im Zustand b ausgelöst, aber nicht in a.b

Folgendes ist mein Angular-Code:

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



}());

Ich habe keine Ahnung. Ich bin mir nicht sicher, was mir fehlt.

19
hemu

StateChange-Ereignisse wurden für ui.router >= 1.0 veraltet.

verwenden Sie für den neuen ui.router Folgendes

StateChangeSuccess

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

StateChangeStart

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

Weitere Informationen finden Sie in diesem Migrationshandbuch

29
Sibiraj

Wenn Sie den neuen ui-router (v1.0.0) verwenden, funktionieren die $stateChange* -Ereignisse nicht. Sie müssen ab sofort $transitions.on*-Hooks verwenden.

Sie können hier lesen.

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

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

14
phegde

$ state -Ereignisse werden für die Winkelversion> 1.0.0 nicht mehr empfohlen. Jetzt für Änderungsereignisse müssen $ -Übergänge verwendet werden.

beziehen Sie sich auf $ Übergänge von hier aus 

1
ojus kulkarni