Доступ к $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;
});