UI 多个状态的路由器同一个控制器

UI router same controller for multiple states

在我的 Angular JS 应用程序中,我有 2 个视图 - v1 和 v2 以及 1 个控制器 - appCtrl。

我已经配置 UI 路由器如下

          .state('profile.v1', {
            url: '/v1',
            templateUrl: 'v1.html',
            controller: 'appCtrl'
        })
          .state('profile.v2', {
            url: '/v2',
            templateUrl: 'v2.html',
            controller: 'appCtrl'
        })

我在 appCtrl 中有 2 个函数 - fv1 和 fv2。

我想在调用路由“/v1”时执行 fv1,在调用路由“/v2”时执行 fv2。

有人可以建议吗?

$state注入控制器,并检查$state.current.name - 应该是profile.v1profile.v2,这取决于你目前处于什么状态

您可以使用一个状态声明执行此操作的另一种方法是:

.state('profile.detail', {
      url: '/:version',
      templateUrl: function($stateParams){             
         return $stateParams.version +'.html';
     },
      controller: 'appCtrl'
})

然后在controller中注入$stateParams并检查$stateParams.version