Ember JS: принудительный переход к родительскому маршруту - PullRequest
3 голосов
/ 22 января 2020

У меня есть два маршрута: основной маршрут с именем parent и дочерний маршрут с именем parent.child. Когда что-то происходит (назовем это X ) в parent.child, я хочу перейти к parent, но поскольку технически мы уже здесь, Эмбер ничего не делает.

// 'parent.child' controller
this.transitionToRoute('parent');

Так что я хочу знать, есть ли способ форсировать этот «переход». Причина в том, что в parent есть код, который необходимо перезапустить после того, как X произойдет.

Ответы [ 2 ]

1 голос
/ 22 января 2020

Чтобы восстановить наш дочерний маршрут, вы можете позвонить

this.transitionToRoute('parent.index');

Я не уверен, что это решение решит вашу проблему, не увидев ваше приложение, например, это, вероятно, не будет Для запуска хуков в родительском маршруте вам может понадобиться либо переместить их в routes/parent/index, либо изменить дизайн этих хуков.

1 голос
/ 22 января 2020

Вы можете вызвать refresh на своем родительском маршруте.

Теперь самый простой способ вызвать действие на вашем родительском маршруте - это определить его, а затем использовать send на вашем контроллере, чтобы действие всплыло.

Итак, ваш родительский маршрут:

class ParentRoute extends Route {
  @action
  refreshParent() { // dont name it refresh because of the naming conflict
    this.refresh();
  }
}

и ваш дочерний контроллер:

class ChildController extends Controller {
  @action
  refreshParentRoute() { // again, another name
    // this will first look for a `refreshParent` action on this controller,
    // then the `child` route and last the `parent` route.
    this.send('refreshParent');
  }
}
...