12

有没有办法$stateParams从解析函数中调用的服务访问您要转换到的状态?与ngRoute您一起使用$route.current.params. 正如这个最小的 plunk 所示,该服务只看到您要离开的状态:

http://plnkr.co/edit/QpwgAj?p=preview

我将新的$stateParamswhen$stateParams直接注入到 resolve 函数中,但这些值仍然落后于服务中的一条路线。

我错过了什么?

4

2 回答 2

11

不能将传入的参数注入服务本身,但可以将它们传递给服务中的函数(或者您也可以将它们分配给服务中的属性)。

这个 plunker展示了如何将它们传递给一个函数,该函数又将它们存储到服务中的一个属性中。使用“虚拟”属性不应该受到伤害,但它有点难看。:)

将参数作为解析属性传递给控制器​​可能更有意义,然后将它们从控制器构造函数传递给服务......这就是我要做的。

于 2013-09-02T04:19:29.787 回答
8

在 stateprovider 的 resolve 函数中

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;
});
于 2013-10-03T08:32:39.397 回答