Propriedade de objetos Ember (getOwner, injeções de serviço, etc.)

:warning: Importar getOwner de discourse-common/lib/get-owner está obsoleto.

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

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

    import { service } from "@ember/service";
    
    export default class Something extends Component {
      @service router;
    
  • Em casos onde um serviço pode não estar disponível (ou seja, ele vem de um plugin opcional), existe 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("1.0", (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 fallback shim (em um contexto que não seja 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 curtidas