コンポーネントはgjsを使用して作成されましたが、そうではありません

安定版の 3.4.1 です。

私のプラグインには以下があります。

/assets/javascripts/discourse/controllers/user-feedback.js

そして

/assets/javascripts/discourse/templates/user-feedback.hbs には

{{feedback-stream stream=this.model}}

そしてこれらのファイルです。

/assets/javascripts/discourse/components/feedback-stream.js
/assets/javascripts/discourse/templates/components/feedback-stream.hbs

ブラウザコンソールでこのエラーが発生しています。


/discourse/templates/components/feedback-stream] feedback-stream は gjs を使用して作成されたため、そのテンプレートを上書きすることはできません。上書きを無視しています。テンプレートの上書きの将来については、https://meta.discourse.org/t/247487 を参照してください。
しかし、ご覧のとおり、gjs を使用して作成されたものではありません。

現在、このエラーは一時的に無視することにし、プラグインのモダナイゼーションを続けました。テンプレートを共配置した直後(mv templates/components/* components)にエラーは消えましたが、テンプレートは無視されたままです。

「いいね!」 2

なるほど、パズルのピースが繋がり始めたようです。

コンポーネントは

export default class FeedbackStream extends UserStream {

となっており、UserStreamはgjsで記述されています。

間違ったエラーメッセージはさておき、これを最新化して元に戻すにはどうすればよいでしょうか?

「いいね!」 1

変更の目的は何ですか?文脈を理解できるようにするためです。

gjsでは、プラグインのアウトレットにしか依存できないと思います。:thinking:

現在の変更の目的は、プラグインを最新の安定版で再び動作するようにすることです :slight_smile:

このプラグインの特定の部分の目的は、既存のコンポーネントを大幅に再利用しながら、ユーザーのプロフィールページにフィードバックを表示することです。

FeedbackStream に gjs を使用する場合、機能するはずです。そのため、次のようになります。

export default class FeedbackStream extends UserStream {
  <template>
    ここにカスタムテンプレート
  </template>
}

hbs/gjs を同じコンポーネントの継承チェーンで混在させるのは、あまりうまく機能しないと思います。

「いいね!」 3

BTW @Arkshine :exploding_head: を拝見しました。ここで明確にしておきます。テンプレートのオーバーライドは、元の作成形式に関係なく非推奨です。今後数か月以内に完全に削除します。それらのケースでは、プラグアウトレットが解決策であるというのは100%正しいです。

しかし、@RGJ がここで行っていることはテンプレートのオーバーライドではなく、Ember のコンポーネント継承システムを使用しています。

class Foo extends Component

の代わりに

class Foo extends SomeOtherComponent

とすることができます。この場合、コンポーネントは SomeOtherComponent のテンプレートを継承するか、自分でテンプレートを置き換えるかを選択できます。テンプレートの置き換えは Foo にのみ適用され、親の SomeOtherComponent には影響しません。

ただし、この種の継承は比較的まれに使用される機能です。私たちは、テンプレート内でコンポーネントを互いにラップする「コンポジション」を好む傾向があります。(例:DModal が使用されている方法)

「いいね!」 5

なるほど、説明してくれてありがとう!ここでの継承が見えませんでした。理にかなっています。

「いいね!」 3

迅速なご協力と分かりやすいご説明、ありがとうございました、デイビッド!

「いいね!」 4

このトピックは最後の返信から30日経過により自動的にクローズされました。新しい返信はもう許可されていません。