使用$ state.go()时,ui-router不会运行父状态的解析承诺

n4c*_*500 4 states angularjs angular-ui-router

我有一个抽象的父状态,其解析承诺返回有关当前用户的信息.该信息被注入所有子状态的控制器中.

但是,当我使用$state.go('parent.child')解析承诺函数时,没有执行.如果我浏览到代表该状态的URL,它执行正常.

我是否需要在每个子状态上指定解析对象并从父状态中省略它?

do0*_*o0g 9

父状态解析仅针对给定的一组$stateParams值解析一次.如果父状态不依赖$stateParams或不使用any,则其依赖关系将仅解析一次,而不管子状态是否发生任何变化.

您看到的行为差异是子状态更改不会导致父资源被重新加载,而位置更改将在重新加载完整的父状态和子状态时发生.

您可以在此插件中观察此行为.

该示例$stateParams在子状态所依赖的父状态中具有值.通过$state.goui-sref(通过提供两种方法)更改状态将导致刷新父资源.但是,在不更改$stateParams参数的情况下将状态更改为子状态将不会刷新父资源,并且将提供先前返回的值.