Ember オブジェクトの所有権 (getOwner, service injections, など)

:warning: discourse-common/lib/get-owner から getOwner をインポートすることは非推奨になりました。

例えば、サービスにアクセスするには、いくつかの方法があります。

  • コンポーネント/コントローラー/ルートでは、サービスインジェクションを使用してください。

    import { service } from "@ember/service";
    
    export default class Something extends Component {
      @service router;
    }
    
  • サービスが利用できない場合(つまり、オプションのプラグインから提供される場合)は、optionalService インジェクションがあります。

    import optionalService from "discourse/lib/optional-service";
    
    export default class Something extends Component {
      @optionalService categoryBannerPresence;
    }
    
  • API初期化子では、api.container にアクセスできます。

    apiInitializer("1.0", (api) => {
      const router = api.container.lookup("service:router");
    
  • 既存のコードの直接の代替として使用できます。

    import { getOwner } from "@ember/application";
    
  • …または、フォールバックシムが必要な場合(コンポーネント/コントローラー/ルート/ウィジェット以外のコンテキスト)は、次を使用してください。

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

このドキュメントはバージョン管理されています - 変更はgithubで提案してください。

「いいね!」 7