Вложенные ресурсы в ember-cli, беспорядочная структура приложения
Как Новичок для обоих Эмбер.js и ember-cli, у меня возникли проблемы с пониманием того, что кажется необходимым для работы моего приложения.
Логическая иерархия моего приложения выглядит примерно так:
Projects
|___Project
|___Details
|___Team Members
|___Budget
|___Planned
|___Actual
И в настоящее время это мой маршрутизатор.js:
this.resource('projects');
this.resource('project', { path: 'projects/:project_id' }, function() {
this.route('details');
this.route('team');
this.route('milestones');
this.resource('budget', function(){
this.route('project-budget', { path: 'project'});
this.route('resource-budget', {path: 'team'});
});
});
У меня возникли проблемы с тем, куда поместить мои файлы. До момента двух вложенных маршрутов в разделе Бюджет моя структура папок выглядела как моя иерархия, но поскольку ресурс сбрасывает пространство имен, теперь, чтобы заставить его работать, у меня есть чтобы вытащить мой шаблон бюджета, маршрут и контроллер обратно на верхний уровень (с проектами), который просто кажется беспорядочным и, как это будет вызывать головную боль при попытке поддерживать эту вещь позже.
Я делаю это неправильно?
1 ответ:
Определение маршрутизатора может быть немного сложным в Ember. Определение ресурса / маршрута в маршрутизаторе.js должен отражать структуру вашей страницы. Например, если шаблон "команда" должен быть вложен в шаблон "проект", то шаблон "команда" должен быть вложен в шаблон "проект" в маршрутизаторе.js:
Router.map(function() { this.resource('project', function() { this.route('team'); }); });
Если вы используете это.route() в маршрутизаторе.js, то ваша структура папок должна имитировать структуру в маршрутизаторе.JS. Используя пример выше, потому что мы используем это.route () для определения 'team', вашего структура папок будет выглядеть следующим образом:
app/routes/project.js app/routes/project/team.js app/templates/project.hbs app/templates/project/team.hbs
Если, однако, вы решите использовать, используйте это.resource () в маршрутизаторе.js, тогда вы говорите Эмбер, что собираетесь сбросить структуру папок. Так что если вы поменяли маршрутизатор.js к этому:
Router.map(function() { this.resource('project', function() { this.resource('team'); }); });
...тогда ваша структура папок будет выглядеть следующим образом:
Возвращаясь к вашему конкретному вопросу, если вы чувствуете, что сброс структуры папок является беспорядочным, то вы можете использовать это.маршрут() везде и отказаться от этого.resource (), потому что нестабильно это.маршрут () приземлился в Эмбере 1.7: http://emberjs.com/blog/2014/08/23/ember-1-7-0-released.htmlapp/routes/project.js app/routes/team.js app/templates/project.hbs app/templates/team.hbs