我正在构建的应用程序上使用 Handlebars 模板引擎来呈现从服务器获取的数据。
我知道默认情况下它会转义 HTML 值,并且您必须使用三重括号{{{text}}}
才能text: <p>Example</p>
将其呈现为 HTML 元素。
问题是,如果我收到的数据(包括 HTML 标签)已经被转义了怎么办?
所以,如果我收到如下数据:
text: <p>Example</p>
如何强制车把翻译它并将其呈现为普通 HTML?
我正在构建的应用程序上使用 Handlebars 模板引擎来呈现从服务器获取的数据。
我知道默认情况下它会转义 HTML 值,并且您必须使用三重括号{{{text}}}
才能text: <p>Example</p>
将其呈现为 HTML 元素。
问题是,如果我收到的数据(包括 HTML 标签)已经被转义了怎么办?
所以,如果我收到如下数据:
text: <p>Example</p>
如何强制车把翻译它并将其呈现为普通 HTML?
您必须先对其进行解码,然后将其传递给带有三重括号的车把。我知道一个用 jQuery 解码 html 实体的小技巧:
// encoded is "<p>Example</p>" in your example
var decoded = $('<textarea />').html(encoded).val();
// decoded should now return <p>Example</p>
Handlebars 提供帮助器并在Handlebars_helpers.js下编写如下自定义帮助器
Handlebars.registerHelper('encodeMyString',function(inputData){
return new Handlebars.SafeString(inputData);
});
.handlebar
并在您的文件或文件中使用此帮助程序,.hbs
如下所示
{{encodeMyString myHTMLData}}
如果没有 Jquery 的帮助,您可以在车把内的任何地方使用它。即使您可以使用帮助器单独传递数据,它将返回带有前置和附加标签的数据。