javascript bindings $ stateChangeStart wird nicht bei Statusänderungen in UI-Router ES6 ausgelöst?




ui router back to previous state (3)

Expandierend auf Eoins Antwort können Sie die Hooks für $ Transitionen in einem Component Controller wie folgt verwenden

        $transitions.onStart({}, ()=>{
            $log.log('In start')
        });
        $transitions.onFinish({}, ()=>{
            $log.log('In finish')
        });

https://github.com/angular-ui/ui-router/releases/tag/1.0.0alpha0

Ich benutze Bable für ES6 und Webpack. Ich bin auf Winkel 1.xx und baue eine Anwendung. Bis jetzt habe ich kein Problem gefunden. Ich möchte eine Funktionalität haben, mit der ich alle Routenänderungen verfolgen kann. Ich benutze UI-Router. Das Problem ist, dass $stateChangeStart nicht ausgelöst wird. Der Code wird unten erwähnt.

/*All includes are taken care of. Please look at the run method*/

angular.module('chpApp', [
        uirouter,
        angular_animate,
        uibootstrap,
        formly,
        formlyBootstrap,
        ngMessages,
        angularLoadingBar,
        'ngNotificationsBar',
        'jkuri.datepicker',
        'LocalStorageModule',
        'ncy-angular-breadcrumb',
        'mgo-angular-wizard',
        'luegg.directives',
        'ngToast',
        'ui.mask',
        /*Application Modules*/
        angularnvd3,
        chpConstants,
        menu,
        header,
        breadcrumb,
        auth,
        dashboard,
        programs,
        device
    ])
    .run(['$rootScope', function($rootScope) {
        $rootScope.$on('$stateChangeStart', () => {
            console.log('lol')
        })
    }])
    .config(routing);

Bitte lassen Sie mich wissen, was ich falsch mache, weil der Status geändert wird, aber das $stateChangeStart Ereignis nie ausgelöst wird. Die run Methode ist der Ort, an dem ich mich mit dem Listener $stateChangeStart .

Ich nehme an, dass es etwas mit ES6 zu tun hat und ich finde keine Referenz. Vielen Dank.


Answer #1

Ich hatte ein ähnliches Problem und erkannte schließlich, dass die stateChange* in ui-router 1.0 standardmäßig veraltet und deaktiviert sind. Ich benutze 1.0.0-alpha0 . Die Funktionalität, die von diesen Ereignissen bereitgestellt wird, kann nun über Übergangshaken erreicht werden. Dies ist in den Release-Notes für die 1.0 alpha enthalten und kann hier gelesen werden: https://github.com/angular-ui/ui-router/releases/tag/1.0.0alpha0


Answer #2

Wenn Sie die anderen Antworten erweitern, können Sie die Legacy 0.2. * StateChange-Ereignisse manuell aktivieren. Speichern Sie das folgende Modul als ui-router-polyfill-wrapper.js :

'use strict';

import uiRouter from 'angular-ui-router';
import 'angular-ui-router/release/stateEvents';

let module = angular
    .module('ui-router-polyfill-wrapper', [
        uiRouter,
        'ui.router.state.events',
    ]);

export default module;

Setzen Sie dann require('./ui-router-polyfill-wrapper').default.name anstelle von require('angular-ui-router').name in Ihrem Angular-App-Modul Abhängigkeits-Array.





webpack