Я знаю, что дочернее состояние/контроллер может ждать необходимых результатов асинхронизации, добавив объект обещания к объекту разрешения в свой объект описания состояния. Но использование этого означает, что решение о том, что требуется для состояния, выполняется до запуска контроллера. где в моем случае мне нужно применить логику, чтобы решить, нужны ли мне какие-либо асинхронные данные вообще или нет и какими должны быть эти данные. Я также понимаю, что я могу поместить эту логику в службу, но это будет означать перенос всей логики с контроллера на соответствующую службу [которая является опцией, но чувствует себя «неправильно»].Угловой UI-маршрутизатор приостанавливается до выполнения контроллера состояния пользователя
В моем сценарии я хотел бы, чтобы родительское состояние могло отложить поток выполнения и не выполнить его дочерние контроллеры состояния, пока не закончит подготовку к ним некоторого контента.
Настройка обещания в области видимости и ожидании его в дочернем состоянии будет работать только в том случае, если у самого дочернего состояния нет собственных дочерних состояний [поскольку в этом шаблоне выполняется дочерний контроллер, и выполнение будет продолжено к его децентрализованным состояниям, где снова я снова должен добавить обещание, чтобы заставить их фактически запустить свой код, когда обещание будет разрешено].
Я также знаю, что я мог бы, вероятно, поймать следующее событие StateChangeStarted
, установить event.preventDefault=true
, а затем использовать $urlRouter.sync()
это решение обещания в родительском состоянии. но для него это довольно неудобно.
Я хотел был бы иметь возможность сделать что-то вроде $urlRouter.pause()
[нет такого API в момент написания Q], чтобы предотвратить продолжение маршрутизатора, а затем можно позвонить $urlRouter.sync()
.
Каким будет метод «Угловой способ» для условного приостановки выполнения контроллеров дочерних состояний до тех пор, пока некоторые результаты асинхронизации не будут разрешены родительским состоянием?
FYI, это звучит так же, как работа для прикованных решает. Результат родительского разрешения может быть введен в дочерние разрешения (после завершения разрешения родителя). Какая логика заключается в том, что ваш контроллер делает это, не так ли? –