内部的小胡子模板字符串呈现为HTML

时间:2013-05-28 20:03:37

标签: javascript jquery html mustache

我正在使用Mustache来渲染模板。

我有这个json对象:

  {
    title: "Foo bar", 
    content: "<p> Html here </p>", 
    footer: "footer content here"
  }

我有一个Mustache模板,如:

  <div id="box">
    <div id="title"> {{title}} </div> 
    <div id="content"> {{content}} </div> 
    <div id="footer"> {{footer}} </div> 
  </div>

我的问题是变量内容中的html没有被渲染,而只是被打印到屏幕上。

我看到(在非查看源窗口中):<p> Html here </p>,我只想查看页面源代码。

我如何解决这个问题,当我将字符串传递给小胡子模板时,HTML内部会被渲染?我在调用mustache.render(templates.all,data);我打电话给小胡子。

2 个答案:

答案 0 :(得分:118)

来自Mustache documentation

  

默认情况下,所有变量都是HTML转义的。如果你想回来   未转义的HTML,请使用三重胡须:{{{name}}}。

所以你只需要在模板中使用eg。{{{content}}}

  <div id="box">
    <div id="title"> {{title}} </div> 
    <div id="content"> {{{content}}} </div> 
    <div id="footer"> {{footer}} </div> 
  </div>

答案 1 :(得分:-2)

您可以使用Java代码轻松呈现。

Map<String,String> vars =new HashMap<>();
vars.put("title","Foo bar");
vars.put("content","Html here");
vars.put("footer","footer");
String renderedString = Mustache.compiler().compile(yourBodyTemplate()).execute(vars);

将渲染的字符串写入html文件。就是这样。