Описание
Роутер определяется в файле router.js
и является наследником класса EMBER.ROUTER.
Подробнее о содержимом роутера можно прочитать на сайте Ember.
Пример структуры для приложений.
Пусть у нас есть модель “new-platform-someproject-employee”, тогда роутер для неё будет следующий:
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: config.locationType
});
Router.map(function() {
// /new-platform-someproject-employees
this.route('new-platform-someproject-employees'); // Список записей.
// /new-platform-someproject-employees/2 - render into outlet in application template
this.route('new-platform-someproject-employee', { path: 'new-platform-someproject-employees/:id' }); // Форма редактирования записи с идентификатором id.
// /new-platform-someproject-employees/new
this.route('new-platform-someproject-employee.new', { path: 'new-platform-someproject-employees/new' }); // Форма создания записей.
});
export default Router;
Если есть потребность, чтобы при работе с приложением пользователь видел путь, отличный от имени модели (например, имя модели слишком длинное или записано русскими буквами), то можно писать роутер следующим образом (при этом имена сущностей в коде используются вида ‘new-platform-someproject-employee’, ‘shortpaths’ фигурирует только в роутере, либо если где-то будет указан url в явном виде, что не рекомендуется):
Router.map(function() {
this.route('new-platform-someproject-employees', { path: 'shortpaths' });
this.route('new-platform-someproject-employee', { path: 'shortpaths/:id' });
this.route('new-platform-someproject-employee.new', { path: 'shortpaths/new' });
});
Роутер и пути для контроллеров и роутов
Структура файлов контроллеров и роутов тесно связана с содержимым роутера.
Пусть есть роутер следующего вида:
Router.map(function() {
// /employees
this.route('employees');
// /employees/2 - render into outlet in application template
this.route('employee', { path: 'employees/:id' });
// /employees/new
this.route('employee.new', { path: 'employees/new' });
});
Тогда структура для файлов роутов и контроллеров будет устроена одинаково (описана наиболее типичная ситуация, некоторые контроллеры в общем случае могут отсутствовать или связи будут идти более хитро):
Корневая папка (routes
или controllers
), в которой:
- ’'’employee.js’’’ // Форма редактирования.
- ’'’employees.js’’’ // Списковая форма.
- вложенная папка ‘'’employee’’’, в которой:
- ’'’new.js’’’ // Форма создания.