Роутер определяется в файле 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
используется, например, в этом случае.