angularjs - how to inject different service based on routeParam -
lets have services similar api different implementation
myapp.module('mymoduleapp').service('bananaservice', function(){ this.name = 'banana'; }); myapp.module('mymoduleapp').service('appleservice', function(){ this.name = 'apple'; });
i have way inject fruit
, , 1 of 2 services according routeparam value.
for example, lets assume route /:fruit/supply
have controller
myapp.module('mymoduleapp').controller('fruitsupplyctrl', function($scope, fruit, $log){ $log.info(fruit.name); // should print banana or apple depends on route })
what pattern in angular need use. tried using factory, provider , service, did not succeed. invoked 1 time when site loads while need invocation per route change.
currently, have service fruit method 'get' returns right service.
myapp.module('mymoduleapp').service('fruitservice', function(appleservice, bananaservice, $routeparams){ this.get = function(){ homecoming $routeparams.fruit === 'banana' ? bananaservice : appleservice; } })
but not seem right me. sure there more angular way
this.
you can utilize $injector.
https://docs.angularjs.org/api/auto/service/$injector
myapp.module('mymoduleapp').controller('fruitsupplyctrl', function($scope, fruit, $injector){ var servicename = fruit.name + 'service'; $injector.get(servicename); // right service })
angularjs
No comments:
Post a Comment