最近几天,我一直在努力使用AngularJS ui-router。我试图在每次路线改变时触发功能,但它似乎不起作用。
我有这样的路线:
.state('app', {
url: '/app',
abstract: true,
templateUrl: 'pages/menu.html',
resolve: {
function() {
console.log('test');
}
}
})
.state('app.home', {
url: '/home',
views: {
'menuContent': {
templateUrl: 'pages/home.html',
controller: 'homeCtrl'
}
}
})
.state('app.profile', {
url: '/profile',
views: {
'menuContent': {
templateUrl: 'pages/profile.html',
controller: 'profileCtrl'
}
}
})
为什么在将路径从app.home更改为app.profile或反之亦然时,父状态中的函数未触发?
在menu.html内部,我使用href="#/app/home
答案 0 :(得分:1)
我相信在首次加载应用时,父控制器代码正在运行一次。
如果你想在每次更改状态时运行某些东西(我假设路由更改的意思),你可以在父控制器中使用$ stateChangeSuccess这样的事件。
以下是一个例子:
$scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {
if (toState.name === 'app.about') {
console.log('This is the about state!');
}
}
您可以在此侦听器中调用所需的函数,然后每次都应该触发。