$ stateChangeSuccess事件触发两次

时间:2017-06-09 15:52:00

标签: angularjs

我正在使用ui.router为angularjs SPA应用程序进行路由实现,并在navbar.html页面中使用以下代码

<ul>
  <li>
    <a ui-sref="about" ng-click="$root.sideMenuOpen = false"  ng-bind="languageData['About']"></a>
  </li>
</ul>

router.js

.state('about', {
                url: '/about/:jump',
                views: {
                    'mainView': {
                        templateUrl: '/modules/about/about.html',
                        controller:'AboutCtrl',
                        resolve: {
                            // Code details
                        }
                    }
                }
            })

app.js

$rootScope.$on('$stateChangeSuccess', function (event, toState) {

// Code details
  console.log('Testing')
});

index.html页面中引用了上述app.js文件。现在,当我导航到navbar.html中的About链接时,我在控制台窗口中看到带有'Testing'的console.log值被打印两次。

任何人都可以提供解决此问题的指导。

1 个答案:

答案 0 :(得分:0)

尝试将事件绑定到特定的$scope而不是$rootScope,这可以防止事件在组件引导之前触发

也许该事件多次触发,因为您有一条路线重定向到另一条路线,并且$rootScope会被通知两次。

$scope.$on('$stateChangeSuccess', function (event, toState) {

// Code details
  console.log('Testing')
});