Angular $ rootScope.on(' $ stateChangeStart')无效

时间:2017-01-21 12:13:59

标签: angularjs debugging angular-ui-router

我使用this来创建我的网站,当我使用$ rootScope.on(' $ stateChangeStart')创建一个run方法时,它并没有工作。这是代码:

.run('Url',function($rootScope, $state, $location){
    'ngInject' ;

    console.log('Is working');
    function message(to, toP, from, fromP) {
        return from.name  + angular.toJson(fromP) + " -> " + to.name + angular.toJson(toP);
    }
    $rootScope.$on("$stateChangeStart",   function(evt, to, toP, from, fromP)      {
        console.log("Start:   " + message(to, toP, from, fromP));
        console.log('Not working');
    });

我加载网站时的第一个日志正在运行但是后两个日志没有,问题出在哪里?

3 个答案:

答案 0 :(得分:2)

如果您更改版本。

对于新的ui-router(Angular 1.x版本)。您需要加载stateEvents文件。

<script src="lib/angular-ui-router/release/stateEvents.min.js"></script>

在您的应用程序中添加加载

angular.module('MyApp', ['ui.router', 'ui.router.state.events', ...

答案 1 :(得分:0)

你可以像使用

一样使用rootScope。$ on
.run(['$rootScope', '$state', '$location',function($rootScope, $state, $location){  
         console.log('Is working');
         function message(to, toP, from, fromP) {
            return from.name  + angular.toJson(fromP) + " -> " + to.name + angular.toJson(toP);
       }
        $rootScope.$on("$stateChangeStart",   function(evt, to, toP, from, fromP)      {
            console.log("Start:   " + message(to, toP, from, fromP));
            console.log('Not working');
        })
    }]);

答案 2 :(得分:0)

试试这个:&#39; $ viewContentLoading&#39;或者&#39; $ viewContentLoaded&#39; :

$rootScope.$on('$viewContentLoading', function() {
    // your stuff here…
});
$rootScope.$on('$viewContentLoaded', function() {
    // your stuff here…
});