2017-01-18 5 views
0

У меня есть два пути:Ember 2 - Загрузка вложенного маршрута в родительском маршруте

  • /users/:user_id (ака user)
  • /users/:user_id/roles (ака user roles)

теперь я хочу, чтобы показать user roles внутри маршрут user. Я по-прежнему хочу иметь отдельный маршрут user roles.

Когда user roles загружаются в user маршрута, страница должна показать user roles раздел/шаблон как loading (Из запросов к серверу для user_roles должны продолжать быть разделены, я не хочу, чтобы загрузить user_roles (ajax) изнутри маршрут user, поскольку он замедляет загрузку маршрута).

Как это достичь?

  • Я думаю, что я могу сделать асинхронный компонент, который называется ... user-roles-component и кормить user в него так: {{user-roles-component user=user}}. Затем я могу использовать этот компонент на обоих моих маршрутах. За исключением того, что в случае user roles маршрута, я не буду загружать модель ?. И я не буду нарушать DDAU, так как я буду иметь дело с данными user_roles непосредственно в моем компоненте.
  • Или я просто сделаю услугу под названием user-roles-service, которая занимается асинхронной загрузкой user_roles с учетом user, а также передает ее на обоих маршрутах и ​​выполняет рендеринг с использованием настраиваемого компонента, который будет находиться на обоих маршрутах.

ответ

0

Я бы создал loading state в вашем маршруте и загрузил содержимое ролей после нажатия одной кнопки/ссылки и передачи полученного контента вашему компоненту.

Альтернативой является создание состояния загрузки в вашем компоненте (и, вероятно, так, как я бы это сделал). Для этого вы получите Promise из вашего запроса ajax (есть несколько способов сделать это: .find(), .query(), ember-ajax, ember-network). Вы активируете состояние загрузки своего компонента, как только вы нажмете кнопку/ссылку, чтобы загрузить контент, и как только обещание будет разрешено, вы снова измените состояние своего компонента.

В обоих случаях ваш компонент может отображать его содержимое после получения данных, и вы сохраняете AUDD (Actions Up, Data Down).

 Смежные вопросы

  • Нет связанных вопросов^_^