Установить модель контроллера вложенных ресурсов для дочернего объекта родительской модели маршрута
Это может показаться немного запутанным, но я постараюсь объяснить это.
у меня есть loans
маршрут, а затем у меня есть вложенный ресурс под названием продукт. Один loan
может иметь много продуктов, и когда вы выбираете, чтобы просмотреть один из продуктов, я перенаправить на product
вложенный ресурс. Проблема в том, что мое приложение поддерживает работу с несохраненными данными. Таким образом, изначально при создании нового кредита вы можете добавлять новые продукты без сохранения кредита (в моей модели кредита есть свойство hasMany для продукта), но когда я перехожу к маршруту продукта, мне нужно получить доступ к модели кредита на маршруте моего кредита. и получить все продукты, которые есть у ссуды, а затем найти ее по идентификатору в URL, но я сталкиваюсь с проблемой, что, когда я получаю контроллер ссуд, его модель все еще пуста, я думаю, это потому, что маршрут ссуды выполняется после маршрута продукта.
Я придерживаюсь неправильного подхода или есть способ получить доступ к модели ссуд?
1 ответ
Вы должны иметь доступ к контроллеру ссуд и его модели из дочернего контроллера, если вы объявите его как зависимость.
Просто добавь needs: 'loans'
(с вашим реальным названием маршрута ссуды) внутри контроллера продукта, а затем вы можете получить доступ к контроллеру ссуд, например: this.get('controllers.loans')
,
Вы можете прочитать больше здесь: http://emberjs.com/guides/controllers/dependencies-between-controllers/
Обновление, чтобы полностью ответить на оригинальный вопрос
Изнутри ProductRoute вы сможете получить доступ к родительской модели, выполнив this.modelFor('loan'). Убедитесь, что вы используете фактическое имя маршрута, объявленное в Router.map.