Я пытаюсь понять, как обмениваться данными между моими контроллерами/маршрутами.Обмен данными в ember
У меня есть приложение, отображающее данные о компаниях. Вот маршруты, которые я хочу:
/ summary info
/companies list of all companies with some more detail
/companies/:id details about a single company
Теперь данные, необходимые для всех трех маршрутов, содержатся в одном массиве данных компании. Поэтому я хочу, чтобы эти данные загружались, когда приложение запускалось, а затем использовалось для каждого маршрута. Есть также дополнительные методы, которые мне понадобятся на контроллере, который должен быть общим.
Очевидно, что вторые и третьи маршруты вложенные, так что я могу обмениваться данными из CompaniesController
когда я ссылку на конкретную компанию, передав данные этой компании:
{{#linkTo 'company' company}}{{ company.name }}{{/linkTo}}
Но резюме маршрут - это то место, где я застреваю. Два варианта я придумал:
Создание
CompaniesController
с любыми дополнительными методами, мне нужно, и создатьIndexController
путем расширения егоApp.IndexController = App.CompaniesController.extend({});
Тогда, насколько я могу судить, как маршруты нужно будет найти модели:
App.Router.map(function() { this.resource('companies'); }); App.CompaniesRoute = Ember.Route.extend({ model: function() { return App.Company.find(); } }); App.IndexRoute = Ember.Route.extend({ model: function() { return App.Company.find(); } });
Похоже, там должно быть лучше, так как я должен повторить это для каждого нового маршрута я добавить (например,
/revenue
).Настройте маршрут в пределах
companies
ресурса и укажите путь '/'. Что мне не нравится в этом, так это то, что «вложенность» моего пользовательского интерфейса не соответствует данным. Мне также кажется, что мне придется переопределить свойствоmodel
для каждого маршрута.
Есть ли другой вариант, который лучше?
tl; dr: Как следует делиться данными между контроллерами?
Спасибо. Исходя из позвоночника, мне нелегко обернуть голову вокруг этого. Кажется, что контроллеры могут использоваться только для обмена данными; в позвоночнике, у меня будет коллекция 'company', доступ к которой может получить несколько просмотров. Короче говоря, целесообразно ли в ember создавать контроллер исключительно для хранения + совместного использования массивов моделей? –
Если у вас есть такие данные, как «настройки приложения», то есть правильность настройки, которая не является составной частью комманды route/controller/view. Затем вы можете использовать API потребностей, чтобы ваши настройки были доступны другим контроллерам. Но если ваши данные связаны с деревом ресурсов, которые вы определили, то конкретный контроллер для каждого ресурса является лучшим подходом, вы все равно можете использовать все типы контроллеров жестко. – intuitivepixel
Прошу прощения, я хочу что-то прояснить. @intuitivepixel Это работает в противоположном направлении? Индексный маршрут 'нуждается'? Нужно ли это «делать» поиск в контейнере или стрелки маршрута тоже? –