我知道子状态/控制器可以通过向其状态描述对象中的解析对象添加一个承诺对象来等待所需的异步结果。但是使用它意味着在控制器运行之前决定了状态所需的内容。在我的情况下,我需要应用逻辑来决定是否需要任何异步数据以及这些数据应该是什么。 我也明白,我可以把这个逻辑放在一个服务中,但这意味着将所有的逻辑从控制器移到相应的服务[这是一个选项,但感觉“错误”]。角状UI路由器在子状态控制器执行之前暂停
在我的场景中,我希望父状态能够推迟执行流程,并且不让他的子状态控制器执行,直到完成为它们准备一些内容为止。
只有当子状态本身没有自己的子状态时,才在子范围上设置一个承诺并等待它。[因为在这种模式下子控制器执行并且执行将继续到它的继承人国家,我再次需要添加一个承诺,让他们在解决承诺时实际运行他们的代码]。
我也知道我可能会赶上下一个StateChangeStarted
事件,设置event.preventDefault=true
并在以后使用$urlRouter.sync()
它承诺对父状态的决心。但这样做感觉很尴尬。
我希望能够做一些类似$urlRouter.pause()
[在编写Q时没有这样的API]以防止路由器继续,然后能够呼叫$urlRouter.sync()
。
什么是“有条不紊”的方式来有条件地暂停子状态控制器的执行,直到一些异步结果被父状态解决为止?
FYI,这听起来酷似用于链解决了工作。父解析的结果可以注入到子解析中(一旦父解析完成)。你的控制器在做什么逻辑不适合分解? – 2014-10-06 21:07:46