UI路由器用于多个状态的控制器

时间:2016-07-16 18:12:45

标签: javascript angularjs angular-ui-router single-page-application angular-ui-router-extras

在我的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。

我想在调用route'/ v1'时执行fv1,在调用route'/ v2'时执行fv2。

有人可以建议吗?

2 个答案:

答案 0 :(得分:4)

$state注入控制器,并检查$state.current.name - 它应该是profile.v1profile.v2,具体取决于您当前所处的状态

答案 1 :(得分:3)

使用一个州声明可以做到这一点的另一种方法是:

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

然后在控制器中注入$ stateParams并检查$stateParams.version