我正在使用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值被打印两次。
任何人都可以提供解决此问题的指导。
答案 0 :(得分:0)
尝试将事件绑定到特定的$scope
而不是$rootScope
,这可以防止事件在组件引导之前触发
也许该事件多次触发,因为您有一条路线重定向到另一条路线,并且$rootScope
会被通知两次。
$scope.$on('$stateChangeSuccess', function (event, toState) {
// Code details
console.log('Testing')
});