Мы просто хотели добавить к ответу, который уже есть у Дональда, и, надеюсь, дать вам еще один пример того, как сделать то, чего вы пытаетесь достичь.
Как вы упомянули "повторное использование кода", я думаю, вы уже используете компоненты в своем приложении. Когда я хотел, чтобы одно и то же действие «сохранить» было повторно использовано между несколькими маршрутами, я обычно реализовывал компонент , который имел дело с редактированием модели и фактическим процессом сохранения.
Например, мое основное приложение использует ту же форму для create и edit an instance
. В моем app/instances/new/template.hbs
я использую компонент edit-instance
, и затем я буду использовать этот же компонент в app/instances/edit/template.hbs
{{edit-instance instance=model}}
Я создал тиддл здесь , который демонстрирует этот принцип более подробно. Еще одна вещь, которую он делает, это на самом деле инкапсулирует создание новых экземпляров внутри компонента путем внедрения службы store
.
export default Ember.Component.extend({
store: Ember.inject.service(),
...
})
Это небольшой удобный трюк, который на первый взгляд может показаться странным, потому что все примеры документации показывают только использование хранилища в файле route
. Не всегда рекомендуется использовать хранилище в компоненте, но когда это необходимо или если это упрощает вашу реализацию, это полезный инструмент!
Я не уверен, что поддерживаю UX / UI примера в Twiddle, но я думаю, что это помогает объяснить, чего вы можете достичь, если попытаетесь реализовать повторное использование кода внутри компонента.
Вы можете увидеть весь пример, работающий над этим Ember Twiddle , и вы можете увидеть, как мы решаем эту проблему в прямом эфире на этом видео YouTube
Надеюсь, это поможет 10