24

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

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

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

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

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

如何强制车把翻译它并将其呈现为普通 HTML?

4

2 回答 2

40

您必须先对其进行解码,然后将其传递给带有三重括号的车把。我知道一个用 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>
于 2012-05-18T14:18:47.730 回答
10

Handlebars 提供帮助器并在Handlebars_helpers.js下编写如下自定义帮助器

Handlebars.registerHelper('encodeMyString',function(inputData){
    return new Handlebars.SafeString(inputData);
});

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

{{encodeMyString myHTMLData}}

如果没有 Jquery 的帮助,您可以在车把内的任何地方使用它。即使您可以使用帮助器单独传递数据,它将返回带有前置和附加标签的数据。

于 2016-11-29T19:10:23.477 回答