Обзор работы роутинга в сгенерированных приложениях, варианты настройки URL для страниц.

Роутер определяется в файле 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 доступен по URL http://localhost:4200/new-platform-someproject-employee-l.
  • роут формы редактирования app/routes/new-platform-someproject-employee-e доступен по URL http://localhost:4200/new-platform-someproject-employee-e/d7e880b2-74d3-4599-ab3d-d872fbc1c574, где d7e880b2-74d3-4599-ab3d-d872fbc1c574 - идентификатор редактируемой записи.
  • роут формы создания new-platform-someproject-employee-e/new доступен по URL http://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 используется, например, в этом случае.