Angularjs 如何使控制器在角度主布局上运行路线改变?

Angularjs 如何使控制器在角度主布局上运行路线改变?,angularjs,Angularjs,我有一个有角度的页面,它有一个ng控制器指令和一个ng视图指令 <body ng-controller="MainController"> <h1>Welcome to my main template</h1 <ng-view></ng-view> </body> 例如,当我单击将我路由到/启动的URL时,只有StartController运行,而不是MainController。我想这是有意义的,因为主布局已经加

我有一个有角度的页面,它有一个ng控制器指令和一个ng视图指令

<body ng-controller="MainController">
   <h1>Welcome to my main template</h1
   <ng-view></ng-view>
</body>
例如,当我单击将我路由到/启动的URL时,只有StartController运行,而不是MainController。我想这是有意义的,因为主布局已经加载,然后现在只需要加载模板,但是我的MainController中有逻辑控制我需要运行的模板视图的一部分

但是,如果刷新整个页面,两个控制器都会运行


有没有办法让两个控制器都运行?这是错误的模式吗?

将逻辑从MainController移动到服务中,具体取决于各个视图控制器中的服务。然后从视图控制器调用服务以执行逻辑。

在主控制器上侦听
$routeChangeSuccess
,以在路由更改时获得通知

app.controller('MainController', function($scope) {
  $scope.$on('$routeChangeSuccess', function(event, current, previous, rejection) {
    if (current == 'someRoute') {
      //execute some route logic
    }
  });

})

当使用此选项时,我必须使用if(current.$$route.originalPath==='someRoute')
app.controller('MainController', function($scope) {
  $scope.$on('$routeChangeSuccess', function(event, current, previous, rejection) {
    if (current == 'someRoute') {
      //execute some route logic
    }
  });

})