使用 UI 路由器访问从解析函数调用的服务中新状态的 $stateParams [英] Access $stateParams of new state in service called from resolve function with UI Router
问题描述
有没有办法访问 $stateParams
以获取您要从解析函数中调用的服务转换到的状态?使用 ngRoute
,您将使用 $route.current.params
.正如这个最小的 plunk 显示的那样,该服务只会看到您要离开的状态:
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
当 $stateParams
直接注入解析函数时,我得到了新的 $stateParams
,但这些值仍然落后于服务中的一个路由.
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.
我错过了什么?
推荐答案
你不能将传入的参数注入到服务本身,但是你可以将它们传递给一个函数(或者您也可以将它们分配给服务中的属性).
You 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 展示了如何将它们传递给函数,该函数又将它们存储到服务.使用虚拟"属性不应该受到伤害,但它有点难看.:)
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.
这篇关于使用 UI 路由器访问从解析函数调用的服务中新状态的 $stateParams的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!