Роутер определяется в файле router.js и является наследником класса EmberRouter. Подробнее о содержимом роутера и его настройке можно прочитать на сайте Ember.
Генерируемый роутер
Если для класса во Flexberry Designer заданы списковая форма и форма редактирования, то при генерации для модели new-platform-someproject-employee в роутер будут добавлены следующие роуты для списковой формы, формы создания и редактирования:
import EmberRouter from '@ember/routing/router';
import config from './config/environment';
const Router = EmberRouter.extend({
location: config.locationType
});
Router.map(function () {
// Форма со списком записей.
this.route('new-platform-someproject-employee-l');
// Форма редактирования записи с идентификатором id.
this.route('new-platform-someproject-employee-e', { path: 'new-platform-someproject-employee-e/:id' });
// Форма создания записей.
this.route('new-platform-someproject-employee-e.new', { path: 'new-platform-someproject-employee-e/new' });
});
export default Router;
Настройка вида URL
По какому именно URL-адресу будут доступны указанные в роутере роуты зависит от разных настроек.
Пусть приложение развёрнуто по адресу http://localhost:4200.
В файле конфигурации можно задавать locationType.
'use strict';
module.exports = function(environment) {
var backendUrl = 'http://localhost:6500';
...
let ENV = {
...
rootURL: '/',
locationType: 'auto',
};
...
return ENV;
};
Настройку location можно определять непосредственно в роутере удобным способом, однако лучше всё же определять её в файле конфигурации:
Router.map(function() {
...
});
Router.reopen({
location: 'auto'
});
// Это сгенерированный код в роутере.
const Router = EmberRouter.extend({
location: config.locationType // Можно вместо вычитки значения из конфига задать своё значение, что не рекомендуется.
});
locationType: auto и history
По умолчанию генерируется настройка locationType: auto (чаще всего, согласно документации, это эквивалентно варианту locationType: history ). Тогда записи в роутере из примера выше будут соответствоавать следующему:
- роут списковой формы
app/routes/new-platform-someproject-employee-lдоступен по URLhttp://localhost:4200/new-platform-someproject-employee-l. - роут формы редактирования
app/routes/new-platform-someproject-employee-eдоступен по URLhttp://localhost:4200/new-platform-someproject-employee-e/d7e880b2-74d3-4599-ab3d-d872fbc1c574, гдеd7e880b2-74d3-4599-ab3d-d872fbc1c574- идентификатор редактируемой записи. - роут формы создания
new-platform-someproject-employee-e/newдоступен по URLhttp://localhost:4200/new-platform-someproject-employee-e/new.
locationType: hash
Если указать locationType: hash, то в адреса будет добавлен символ “#”.
Например, в примере выше роут списковой формы app/routes/new-platform-someproject-employee-l будет доступен по URL http://localhost:4200/#/new-platform-someproject-employee-l.
locationType: none
Если указать locationType: none, то URL в браузере не будет изменяться при переходе между роутами. Значение locationType: none используется, например, в этом случае.