最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - UI router same controller for multiple states - Stack Overflow

programmeradmin2浏览0评论

In my Angular JS application, I have 2 views - v1 and v2 and 1 controller - appCtrl.

I have configured UI router as below

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

I have 2 functions in appCtrl - fv1 and fv2.

I want to execute fv1 when route '/v1' is called, fv2 when route '/v2' is called.

Can somebody suggest?

In my Angular JS application, I have 2 views - v1 and v2 and 1 controller - appCtrl.

I have configured UI router as below

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

I have 2 functions in appCtrl - fv1 and fv2.

I want to execute fv1 when route '/v1' is called, fv2 when route '/v2' is called.

Can somebody suggest?

Share Improve this question asked Jul 16, 2016 at 18:12 Kalyan Chakravarthy SKalyan Chakravarthy S 7962 gold badges8 silver badges24 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 5

Inject $state into the controller, and check $state.current.name - It should be profile.v1 or profile.v2, depending on what state you're currently in

Another way you can do this with one state declaration is:

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

Then inject $stateParams in controller and check $stateParams.version

发布评论

评论列表(0)

  1. 暂无评论