如何在Google Closure模板中传递html参数

时间:2014-09-25 13:04:15

标签: closures google-closure-templates

伙计我想在Google Closure Template中传递一个包含html字符的参数,但我得到的只是文字html文本。怎么做?

到目前为止我所尝试的是:

{template .modal autoescape="strict" kind="html"}
   {$html_content}
{/template}

我一直在阅读this,但这不是很有帮助。感谢

1 个答案:

答案 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}