Is there a way to access $stateParams
for the state you're transitioning to from a service called in a resolve function? With ngRoute
you'd use $route.current.params
. As this minimal plunk shows, the service only sees the state you're leaving:
I get the new $stateParams
when $stateParams
is injected directly into a resolve function, but the values are still behind by one route in the service.
What am I missing?
Is there a way to access $stateParams
for the state you're transitioning to from a service called in a resolve function? With ngRoute
you'd use $route.current.params
. As this minimal plunk shows, the service only sees the state you're leaving:
http://plnkr.co/edit/QpwgAj?p=preview
I get the new $stateParams
when $stateParams
is injected directly into a resolve function, but the values are still behind by one route in the service.
What am I missing?
Share Improve this question edited Sep 2, 2013 at 4:40 Nafiul Islam 82.5k33 gold badges143 silver badges202 bronze badges asked Sep 2, 2013 at 3:15 nrwnrw 8192 gold badges7 silver badges22 bronze badges 4 |2 Answers
Reset to default 11You can't inject the the incoming parameters into the service itself, but you can pass them to a function in the service (or you could also assign them to a property in the service).
this plunker shows how to pass them to a function, which in turns stores them to a property in the service. Using a "dummy" property shouldn't hurt, but it is a bit ugly. :)
It might make more sense to pass the parameters to the controller as a resolve property and then hand them out to a service from the controller constructor... that's what I'd do.
In your resolve function in stateprovider
resolve: {
something: function(MyService, $stateParams){
return MyService.doSomethingWithParam($stateParams.someParameter);
}
}
In your service
myService = angular.module('myService', [])
.factory('MyService', function() {
var myServiceInstance;
myServiceInstance.doSomethingWithParam= function(param){
//...store or do something with your state param here and return result
};
return myServiceInstance;
});
$state
(or some other) service? – nrw Commented Sep 2, 2013 at 3:36$stateParams
being injected into the resolve hash. See wiki sectionResolve
github.com/angular-ui/ui-router/wiki – Chandermani Commented Sep 2, 2013 at 3:45$stateParams
when$stateParams
is injected directly into a resolve function (which is what the examples show). I'm looking for a way to access them from a service. I know I can inject$stateParams
into a resolve function and pass that value to a service. Is that the best/preferred way to get the effect I want? – nrw Commented Sep 2, 2013 at 4:11