Доступ к приложению, использующему Flexberry Ember (как и к любому Ember-приложению), возможен через глобальный объект, имя которого определяется в конфигурации (environment.js
) в свойстве ENV.modulePrefix
.
Например, если в modulePrefix
указано значение ‘ember-app’, то глобально будет доступен объект с именем EmberApp
. Это есть экземпляр класса Ember.Application
.
У инстанции класса Ember.Application
есть «контейнер», который занимается инстанциированием и кешированием объектов приложения. Он доступен через свойство __container__
. Соответственно у этого контейнера есть метод lookup
, который позволяет получить экземпляр любой фабрики приложения (например, контроллера, роута, сервиса, модели и пр.). В этой инстанции соответствующей фабрики приложения можно получать/изменять необходимое поведение через методы get/set
.
Например, свойство, в котором хранится текущий фильтр для поиска, в контроллере приложения динамически можно поменять так:
window.ИмяПриложения.__container__.lookup('controller:имя-контроллера').set('filter', 'значение');
До отдельных элементов на странице “извне” можно добираться либо через DOM, используя, например, jQuery, либо через инстанции соответствующих компонентов, если соответствующая разметка вяляется частью определенного компонента.