有没有办法$stateParams
从解析函数中调用的服务访问您要转换到的状态?与ngRoute
您一起使用$route.current.params
. 正如这个最小的 plunk 所示,该服务只看到您要离开的状态:
http://plnkr.co/edit/QpwgAj?p=preview
我将新的$stateParams
when$stateParams
直接注入到 resolve 函数中,但这些值仍然落后于服务中的一条路线。
我错过了什么?
有没有办法$stateParams
从解析函数中调用的服务访问您要转换到的状态?与ngRoute
您一起使用$route.current.params
. 正如这个最小的 plunk 所示,该服务只看到您要离开的状态:
http://plnkr.co/edit/QpwgAj?p=preview
我将新的$stateParams
when$stateParams
直接注入到 resolve 函数中,但这些值仍然落后于服务中的一条路线。
我错过了什么?
您不能将传入的参数注入服务本身,但可以将它们传递给服务中的函数(或者您也可以将它们分配给服务中的属性)。
这个 plunker展示了如何将它们传递给一个函数,该函数又将它们存储到服务中的一个属性中。使用“虚拟”属性不应该受到伤害,但它有点难看。:)
将参数作为解析属性传递给控制器可能更有意义,然后将它们从控制器构造函数传递给服务......这就是我要做的。
在 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;
});