Где и как указать инициализатор для движка ember? - PullRequest
0 голосов
/ 15 февраля 2019

В моем приложении я использовал инициализаторы для внедрения сервисов в маршруты, контроллеры и компоненты.Я пытаюсь использовать Ember Engine сейчас.Я поделился своими службами приложений со своим ядром, но мне нужно внедрить общие службы приложений в маршруты, контроллеры и компоненты механизма с помощью инициализатора.

В моем приложении я могу создать инициализатор и внедрить службы,Как это сделать в моем двигателе?

Ответы [ 3 ]

0 голосов
/ 15 февраля 2019

Я на самом деле обнаружил, что инициализаторы для движка можно настроить аналогично инициализаторам для приложения.Его можно указать в каталоге lib/<engine>/addon/initializers.

Если вы хотите внедрить службы в маршруты, компоненты и контроллеры, вы должны сначала предоставить доступ к службам из приложения в механизм, как описано в механизме документы .

0 голосов
/ 17 февраля 2019

Эта команда должна создать инициализатор в соответствующей папке внутри механизма in-repo:

ember g initializer <init-name> -ir <engine-name>

В идеале, внедрение службы в контроллер / маршрут / компонент лучше всего выполнить, как указано в другомответ.

См .: https://guides.emberjs.com/release/applications/dependency-injection/#toc_ad-hoc-injections

0 голосов
/ 15 февраля 2019

Может быть существенно проще потребовать его там, где это необходимо, вместо того, чтобы вводить его везде.

Пример из Ember Docs :

import Component from '@ember/component';
import { inject as service } from '@ember/service';

export default Component.extend({
  shoppingCart: service()
});

Это может привести куслуга корзины покупок доступна здесь.Вы можете сделать то же самое в маршрутах и ​​контроллерах, и эта служба является одноэлементной, поэтому она будет создаваться только один раз и совместно использовать состояние для каждого местоположения, к которому осуществляется доступ.

Это позволяет избежать необходимости возиться с созданием инициализатора, специфичного для движка.полностью.

...