テンプレートの簡単なヘルパーを作成しました。コードは次のとおりです。
Handlebars.registerHelper('splitQuote', function (string) {
if (string.indexOf('|') !== -1) {
return string.replace('|', '<span>') + '</span>';
}
return string;
});
したがって、文字列を渡し、文字列を「|」で分割します。キャラクター。また、2番目の部分をスパンタグに入れたいと思います。
問題は、返される結果が純粋なテキストであるため、HTMLではなくテキストのようなスパンタグを取得することです。
誰かがキャッチが何であるか知っていますか?
Tnx
ハンドルバーで文字列をエスケープしたくない場合は、ヘルパーで文字列をhtmlとしてマークする必要があります。これを行うには、 _Handlebars.safeString
_ を使用します。以下はあなたのニーズに合うはずです
_Handlebars.registerHelper('splitQuote', function(string) {
if (string.indexOf('|') !== -1) {
return new Handlebars.SafeString(string.replace('|', '<span>') + '</span>');
}
return string;
});
_
コメントで述べたように、カスタムフォーマットを行う前に、Handlebars.Utils.escapeExpression(string)
を使用して渡された文字列をエスケープし、文字列をエンコードする必要があります。このように書くことをお勧めします:
_Handlebars.registerHelper('splitQuote', function(string) {
string = Handlebars.Utils.escapeExpression(string);
if (string.indexOf('|') !== -1) {
string = string.replace('|', '<span>') + '</span>';
}
return new Handlebars.SafeString(string); // mark as already escaped
});
_
SafeString
を使用する必要はありません。代わりに、ハンドルバーの「トリプル口ひげ」を使用してください。
Handlebars Webサイト から、HTMLエスケープセクション:
ハンドルバーHTML-{{expression}}によって返される値をエスケープします。ハンドルバーに値をエスケープさせたくない場合は、「トリプルスタッシュ」、{{{。
したがって、HTMLでの単純な三重引用符は、エスケープを回避します。
{{{splitQuote}}}