我有一个带有解析承诺的抽象父状态,它返回有关当前用户的信息。这些信息被注入所有子州的控制者。
但是,当我使用$state.go('parent.child')
时,未执行解析承诺功能。如果我浏览到表示该状态的URL,则执行正常。
我是否需要在每个子状态上指定resolve对象并从父对象中省略它?
答案 0 :(得分:9)
父状态解析只会针对给定的一组$stateParams
值解析一次。如果父状态不依赖于$stateParams
或不使用任何状态,那么无论子状态如何变化,其依赖关系都只会被解析一次。
您看到的行为差异是子状态更改不会导致重新加载父资源,而位置更改将在重新加载完整的父级和子级状态时使用。
您可以在此plunk中观察到此行为。
该示例在子状态所依赖的父状态中具有$stateParams
值。通过$state.go
或ui-sref
更改状态(提供两种方法)将导致刷新父资源。但是,在不更改$stateParams
参数的情况下将状态更改为子状态将不会刷新父资源,并且将提供先前返回的值。
答案 1 :(得分:0)
我认为你只是对解决方案缺乏理解,只有当前状态的结果被调用。您只需将解析从父级复制到子级即可。我很确定甚至没有理由在抽象状态上有决心。抽象状态会给你$ stateParams,就是这样。