如何使用Handlebars解码HTML实体

时间:2012-05-18 14:12:30

标签: javascript templates mustache handlebars.js

我在我正在构建的应用程序上使用Handlebars模板引擎来呈现从服务器获取的数据。

我知道默认情况下它会转义HTML值,并且必须使用三重括号{{{text}}}才能将text: <p>Example</p>呈现为HTML元素。

问题是,如果我收到的数据(包括HTML标签)已经转义,我该怎么办?

所以,如果我收到如下数据:

text: &lt;p&gt;Example&lt;/p&gt;

如何强制把手翻译并将其渲染为普通HTML?

2 个答案:

答案 0 :(得分:39)

您必须首先对其进行解码,然后将其传递给带有三个支架的车把。我知道用jQuery解码html实体的小技巧:

// encoded is "&lt;p&gt;Example&lt;/p&gt" in your example
var decoded = $('<textarea />').html(encoded).val();
// decoded should now return <p>Example</p>

答案 1 :(得分:6)

Handlebars提供助手并在 Handlebars_helpers.js

下编写一个自定义助手,如下所示
Handlebars.registerHelper('encodeMyString',function(inputData){
    return new Handlebars.SafeString(inputData);
});

并在.handlebar文件或.hbs文件中使用此帮助程序,如下所示

{{encodeMyString myHTMLData}}

没有Jquery的帮助,您可以在车把内的任何地方使用它。 即使您可以使用帮助程序单独传递数据,也可以使用前置和附加标记返回数据。