カスタムの生テンプレートを追加する

こんにちは、既存のテンプレートを単純に上書きするのではなく、独自の Raw テンプレートを追加しようとしています。

理由:ネストされたコンポーネントを使用する際に発生する厄介な Ember タグを排除したいからです。

… 当初は、templates または templates/list ディレクトリに単に追加するだけで簡単だと思い込み、実際に試してみましたが、テンプレートが見つからず、エラーも出ずに静かに失敗してしまいました。

おそらく、これはサポートされていないことを確認できるでしょうか?

その後、以下を見つけました:

そしてこちら:

そこで、以下を試してみました:

import { addRawTemplate } from "discourse-common/lib/raw-templates";
import { compile } from "handlebars";

<---初期化処理など---

addRawTemplate('search-result-entry', compile(`<span class='result-lala'>hello</span>`));

しかし、以下のエラーが発生しました:

TypeError: Handlebars.compile is undefined

よろしくお願いいたします!

もし私が何か間違ったことをしているなら、お詫びします…

(ちなみに、これは非常に役立つ機能ですので、実装してくださりありがとうございます!)

「いいね!」 1

templates フォルダに生のテンプレートを直接追加できるはずです。私たちは discourse-docs でも同様にしました。現在は .hbr というファイル拡張子を使用しているため、ここで何か問題が起きたのかもしれません。

「いいね!」 6

Ember コンポーネントにデフォルトで追加されるラッパーの <div> のことをおっしゃっていますか?tagName を空文字列に設定することで無効化できます。

Ember コンポーネントを扱うことは、生テンプレートよりもはるかに簡単です。可能であれば、Ember を使い続けることを強くお勧めします。

「いいね!」 3

あー、hbrテンプレートをtemplates/componentsに入れてたんです!(書くと明らかな間違いですよね)

Justin、例をありがとうございます!templatesフォルダ外に移動させて修正しました、なんてバカな!

これで動きました!

@david 非常に役立つヒントをありがとうございます!私もそれを使わせていただきます!アクションを維持できるので完璧です。

どうやら私は必要以上に複雑にしていたようです。ありがとうございました!

「いいね!」 4