我在我正在构建的应用程序上使用Handlebars模板引擎来呈现从服务器获取的数据。
我知道默认情况下它会转义HTML值,并且必须使用三重括号{{{text}}}
才能将text: <p>Example</p>
呈现为HTML元素。
问题是,如果我收到的数据(包括HTML标签)已经转义,我该怎么办?
所以,如果我收到如下数据:
text: <p>Example</p>
如何强制把手翻译并将其渲染为普通HTML?
答案 0 :(得分:39)
您必须首先对其进行解码,然后将其传递给带有三个支架的车把。我知道用jQuery解码html实体的小技巧:
// encoded is "<p>Example</p>" 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的帮助,您可以在车把内的任何地方使用它。 即使您可以使用帮助程序单独传递数据,也可以使用前置和附加标记返回数据。