Доступ к отдельным методам ember-приложений извне

Доступ к приложению, использующему 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, либо через инстанции соответствующих компонентов, если соответствующая разметка вяляется частью определенного компонента.