父状态解析中的函数未触发

时间:2018-01-12 14:35:14

标签: angularjs angular-ui-router

最近几天,我一直在努力使用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

直接导航到州

1 个答案:

答案 0 :(得分:1)

我相信在首次加载应用时,父控制器代码正在运行一次。

如果你想在每次更改状态时运行某些东西(我假设路由更改的意思),你可以在父控制器中使用$ stateChangeSuccess这样的事件。

以下是一个例子:

$scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {
  if (toState.name === 'app.about') {
    console.log('This is the about state!');
  }
}

您可以在此侦听器中调用所需的函数,然后每次都应该触发。