Доступ к $stateParams нового состояния в сервисе, вызываемого из функции разрешения с помощью UI Router
Есть ли способ получить доступ к $stateParams
для состояния, к которому вы переходите, из службы, вызываемой в функции разрешения? С помощью ngRoute
вы должны использовать $route.current.params
. Как показывает этот минимальный plunk, служба видит только состояние, которое вы оставляете:
http://plnkr.co/edit/QpwgAj?p=preview
Я получаю новый $stateParams
, когда $stateParams
вводится непосредственно в функцию разрешения, но значения по-прежнему отстают от одного маршрута в службе.
Что мне не хватает?
Ответы
Ответ 1
Вы не можете вводить входящие параметры в саму службу, но вы можете передать их функции в службе (или вы также можете присвойте им свойство в сервисе).
этот плункер показывает, как передать их функции, которая, в свою очередь, сохраняет их в свойстве службы. Использование свойства "dummy" не должно повредить, но оно немного уродливо.:)
Может возникнуть больше смысла передавать параметры контроллеру в качестве свойства разрешения, а затем передать их в службу из конструктора контроллера... что бы я сделал.
Ответ 2
В вашей функции разрешения в stateprovider
resolve: {
something: function(MyService, $stateParams){
return MyService.doSomethingWithParam($stateParams.someParameter);
}
}
В вашем сервисе
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;
});