Besitz von Ember-Objekten (getOwner, Service-Injection usw.)

:warning: Der Import von getOwner aus discourse-common/lib/get-owner ist veraltet.

Um z. B. auf Dienste zuzugreifen, stehen Ihnen einige Methoden zur Verfügung.

  • In Komponenten/Controllern/Routen sollten Sie Service-Injections verwenden

    import { service } from "@ember/service";
    
    export default class Something extends Component {
      @service router;
    
  • In Fällen, in denen ein Dienst nicht verfügbar sein kann (d. h. er stammt aus einem optionalen Plugin), gibt es eine optionalService-Injection

    import optionalService from "discourse/lib/optional-service";
    
    export default class Something extends Component {
      @optionalService categoryBannerPresence;
    
  • In API-Initializern haben Sie Zugriff auf api.container

    apiInitializer("1.0", (api) => {
      const router = api.container.lookup("service:router");
    
  • Und als direkter Ersatz für vorhandenen Code können Sie verwenden

    import { getOwner } from "@ember/application";
    
  • …oder wenn Sie immer noch den Fallback-Shim benötigen (in einem Kontext, der keine Komponente/Controller/Route/Widget ist), verwenden Sie

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

Dieses Dokument unterliegt der Versionskontrolle – schlagen Sie Änderungen auf GitHub vor.

7 „Gefällt mir“