$ stateChangeStart在用户刷新浏览器时不起作用

时间:2016-02-26 17:41:18

标签: angularjs events angular-ui-router state

请, 我在我的项目中使用ui-router。当用户在状态之间导航时,OtherRole事件正常工作。 但是,如果我刷新浏览器,它就无法工作。

这是我的源代码:

$stateChangeStart

我的布局文件

(function(){
'use strict';

angular.module('app.overlay')
    .directive('ibLoading', ['$rootScope' , '$timeout', loading]);

    function loading($rootScope , $timeout){
        console.log("In dirrective");
        var directive = {
            restrict:'EAC',
            link:link
        };

        function link(scope, element) {

            $rootScope.$on('$stateChangeStart', function() {
                    $timeout(function(){
                        element.addClass('show');
                    } , 50);
              });

              $rootScope.$on('$stateChangeSuccess', function() {
                    $timeout(function(){
                        element.removeClass('show');
                    } , 700);
              });

        }

        return directive;
    }
})();

2 个答案:

答案 0 :(得分:1)

用户刷新不会触发$ stateChangeStart或$ stateChangeSuccess。但是 $ viewContentLoading $ viewContentLoaded 会触发。

您可以尝试以下方法:

         $rootScope.$on('$viewContentLoading', function() {
                $timeout(function(){
                    element.addClass('show');
                } , 50);
          });
          $rootScope.$on('$viewContentLoaded', function() {
                $timeout(function(){
                    element.removeClass('show');
                } , 700);
          });

答案 1 :(得分:0)

试试这个,
如果您更改状态,可以在控制台中查看状态,但如果重新加载页面,则会重新加载状态

$rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
    console.log("Switching To: ", toState.name);
});