Kalyan Chakravarthy S
Kalyan Chakravarthy S

Reputation: 806

UI router same controller for multiple states

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?

Upvotes: 7

Views: 1706

Answers (2)

charlietfl
charlietfl

Reputation: 171679

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

Upvotes: 4

Alon Eitan
Alon Eitan

Reputation: 12025

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

Upvotes: 5

Related Questions