Adr*_*ian 19 javascript helpers handlebars.js
我为我的模板写了一个简单的帮手.这是代码:
Handlebars.registerHelper('splitQuote', function (string) {
if (string.indexOf('|') !== -1) {
return string.replace('|', '<span>') + '</span>';
}
return string;
});
Run Code Online (Sandbox Code Playgroud)
所以我传递一个字符串,然后用"|"分割字符串 字符.我还想把第二部分放入span标签.
问题是,返回的结果是纯文本,所以我得到了像文本而不是HTML的span标签.
有谁知道捕获的是什么?
TNX
meg*_*wac 34
如果你想让Handlebars逃脱它,你必须在你的助手中将字符串标记为html.使用Handlebars.safeString要做到这一点.以下内容应符合您的需求
Handlebars.registerHelper('splitQuote', function(string) {
if (string.indexOf('|') !== -1) {
return new Handlebars.SafeString(string.replace('|', '<span>') + '</span>');
}
return string;
});
Run Code Online (Sandbox Code Playgroud)
正如评论中所提到的,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
});
Run Code Online (Sandbox Code Playgroud)
Men*_*des 27
你不需要使用SafeString.相反,使用车把的"三重胡须":
从Handlebars网站,HTML Escaping部分:
Handlebars HTML-escapes {{expression}}返回的值.如果您不希望Handlebars转义值,请使用"triple-stash",{{{.
因此,html中的简单三重引号将避免转义:
{{{splitQuote}}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14050 次 |
| 最近记录: |