Javascript Handlebars helper-返回HTML而不是文本

Javascript Handlebars helper-返回HTML而不是文本,javascript,handlebars.js,helpers,Javascript,Handlebars.js,Helpers,我为我的模板编写了一个简单的助手。代码如下: Handlebars.registerHelper('splitQuote', function (string) { if (string.indexOf('|') !== -1) { return string.replace('|', '<span>') + '</span>'; } return string; }); handlebar.registerHelper('spl

我为我的模板编写了一个简单的助手。代码如下:

Handlebars.registerHelper('splitQuote', function (string) {
    if (string.indexOf('|') !== -1) {
        return string.replace('|', '<span>') + '</span>';
    }
    return string;
});
handlebar.registerHelper('splitQuote',函数(字符串){
if(string.indexOf(“|”)!=-1){
返回字符串。替换('|','')+'';
}
返回字符串;
});
因此,我传递一个字符串,并用“|”字符分割该字符串。我还想把第二部分放到span标记中

问题是,返回的结果是纯文本,所以我得到的跨度标记像文本,而不是HTML

有人知道有什么问题吗


Tnx

如果您不想转义字符串,则必须在助手中将该字符串标记为html。用来做这个。以下内容应适合您的需要

Handlebars.registerHelper('splitQuote', function(string) {
    if (string.indexOf('|') !== -1) {
        return new Handlebars.SafeString(string.replace('|', '<span>') + '</span>');
    }
    return string;
});

您不需要使用
SafeString
。相反,使用车把上的“三胡子”:

从,HTML转义部分:

Handlebars HTML转义{{expression}返回的值。如果您不希望把手转义一个值,请使用“三重隐藏”{{{{

因此,html中的简单三引号可以避免转义:

{{{splitQuote}}} 

如果要使用SafeString,则应在添加
之前手动对
字符串进行HTML编码。这应该是公认的答案/首选方法
{{{splitQuote}}}