こんにちは、既存のテンプレートを単純に上書きするのではなく、独自の 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
justin
(Justin DiRose)
2
templates フォルダに生のテンプレートを直接追加できるはずです。私たちは discourse-docs でも同様にしました。現在は .hbr というファイル拡張子を使用しているため、ここで何か問題が起きたのかもしれません。
「いいね!」 6
david
(David Taylor)
3
Ember コンポーネントにデフォルトで追加されるラッパーの <div> のことをおっしゃっていますか?tagName を空文字列に設定することで無効化できます。
Ember コンポーネントを扱うことは、生テンプレートよりもはるかに簡単です。可能であれば、Ember を使い続けることを強くお勧めします。
「いいね!」 3
あー、hbrテンプレートをtemplates/componentsに入れてたんです!(書くと明らかな間違いですよね)
Justin、例をありがとうございます!templatesフォルダ外に移動させて修正しました、なんてバカな!
これで動きました!
@david 非常に役立つヒントをありがとうございます!私もそれを使わせていただきます!アクションを維持できるので完璧です。
どうやら私は必要以上に複雑にしていたようです。ありがとうございました!
「いいね!」 4