Emberオブジェクトの所有権(getOwner、サービス注入など)

: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((api) => {
      const router = api.container.lookup("service:router");
    
  • 既存のコードの直接的な置き換えには、以下を使用できます

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

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

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

「いいね!」 7