Propriedade de objetos Ember (getOwner, injeção de serviços, etc.)

:warning: A importação de getOwner de discourse-common/lib/get-owner está obsoleta.

Para acessar, por exemplo, serviços, há alguns métodos à sua disposição.

  • Em componentes/controladores/rotas, você deve usar injeção de serviços

    import { service } from "@ember/service";
    
    export default class Something extends Component {
      @service router;
    
  • Em casos em que um serviço pode estar indisponível (ou seja, ele vem de um plugin opcional), há uma injeção optionalService

    import optionalService from "discourse/lib/optional-service";
    
    export default class Something extends Component {
      @optionalService categoryBannerPresence;
    
  • Em inicializadores de API, você tem acesso a api.container

    apiInitializer((api) => {
      const router = api.container.lookup("service:router");
    
  • E para uma substituição direta de um código existente, você pode usar

    import { getOwner } from "@ember/application";
    
  • …ou, se você ainda precisar do shim de fallback (em um contexto que não seja de componente/controlador/rota/widget), use

    import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
    

Este documento é controlado por versão - sugira alterações no github.

7 Curtiram