伙计我想在Google Closure Template
中传递一个包含html字符的参数,但我得到的只是文字html文本。怎么做?
到目前为止我所尝试的是:
{template .modal autoescape="strict" kind="html"}
{$html_content}
{/template}
我一直在阅读this,但这不是很有帮助。感谢
答案 0 :(得分:3)
{template .modal}
{$html_content |noAutoescape}
{/template}
打算打印HTML。但请考虑不建议在模板中使用|noAutoescape
。
气馁:断言时很容易意外引入XSS攻击 内容安全远离创建的地方。代替, 将内容包装为创建且易于创建的清理内容 证明安全。
- Google Closure Templates Functions and Print Directives
或者,如果您确定$html_content
是"安全" HTML,你可以在将参数传递给模板的地方进行调整:
goog.require('soydata.VERY_UNSAFE');
goog.require('template.namespace');
var container = document.getElementById('modal');
var html = '<strong>HTML you trust!</strong>';
container.innerHTML = template.namespace.modal({
html_content: soydata.VERY_UNSAFE.ordainSanitizedHtml(html);
});
然后您的初始模板将按原样打印HTML:
/**
* @param html_content HTML markup
*/
{template .modal autoescape="strict" kind="html"}
{$html_content}
{/template}