私のプロジェクトの JQuery テンプレートで、HTML をエンコードせずに HTML 文字列である変数を書き出そうとしています。次のように変数を出力すると:
${description}
その結果、生の HTML 文字列がタグ付きで出力され、次のようになります。
<p>text <b>bold</b> <i>italic</i></p>
しかし、コード内のまったく同じ場所でマークアップを実際のタグに変換しようとすると、次のようになります。
{{html $description}}
何も出力しません!
変数を渡す方法を無数に試しましたが、取得できない html ルーチンで何かが起こっていると思います。
ありがとう。
アップデート:
それがどのように呼び出されているかは次のとおりです。
this.$el.attr('data-id', tmplData.id).
data('id', tmplData.id).html($.tmpl(this.template, tmplData));
this.template はテンプレート ファイルで、tmplData は $description とその他の必要な変数を含む JSON です。
別の更新:
{{html '<p>string</p>'}}
期待どおりに動作します。しかし
{{html $another_variable}}
$another_variable に HTML が含まれていない場合でも、出力を生成できません。
別の更新:
私も試しました:
${$item.html(description)}
テンプレートへの呼び出しを次のように変更しました
this.$el.attr('data-id', tmplData.id).
data('id', tmplData.id).
html($.tmpl(this.template, tmplData, {
truncate: _.truncateStrip,
html: _.html,
}));
そして、推奨されたように、文字列を変更せずに通過させるカスタム html ルーチンを作成しました。
html: function(str) {
return str;
}
しかし、まだサイコロはありません。