Reputation: 806
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
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
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