在引号中渲染骨干模板变量

时间:2012-10-24 20:33:52

标签: node.js backbone.js pug

您好我正在使用Backbone将Jade模板渲染为HTML。视图如下所示:

script(type="text/template",id="waiting_call_template") 
    div(class="call-code") <%= channelId %>
    div(style="display: inline-block; vertical-align: top; margin-right: 20px; width: 130px;")
      div(class="statistic", title='<%= fullPage %>') <%= page %>

当呈现时,HTML输出如下所示:

<div title="&lt;%= fullPage%&gt;" class="statistic">test.html</div>

这是因为fullPage变量在引号中。如何让Backbone识别出fullPage是一个变量,即使它在引号中?

5 个答案:

答案 0 :(得分:1)

如果您使用此脚本将标记更改为{{ - varName}},则此方法有效:

_.templateSettings.escape = /\{\{-(.*?)\}\}/g

在您的情况下,您必须将模板更改为:

script(type="text/template",id="waiting_call_template") 
    div(class="call-code") {{- channelId }}
    div(style="display: inline-block; vertical-align: top; margin-right: 20px; width: 130px;")
      div(class="statistic", title='{{- fullPage }}') {{- page }}

来源:Underscore templating - changing token markers

答案 1 :(得分:0)

请改为尝试:

div(class="statistic", title=<%= fullPage %>)

答案 2 :(得分:0)

如果要在引号之间打印内容,请使用“#{}”语法:

div(class="statistic", title="#{fullPage}") #{page}

答案 3 :(得分:0)

您是否尝试过下划线的escape()函数?

来自Underscore manual

  

_。escape(string)转义字符串以插入HTML,   替换&amp;,&lt;,&gt;,“,'和/字符。

答案 4 :(得分:0)

只需取消模板即可。使用下划线'unescape'。在你的骨干里:

_.template( $('#tmpl-following').html() ),

更改为

_.template( _.unescape( $('#tmpl-following').html() ) ),