3

您好我正在使用 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 是一个变量,即使它在引号中?

4

5 回答 5

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

来源:下划线模板 - 更改标记标记

于 2013-07-30T07:08:25.727 回答
0

当您想在引号之间打印某些内容时,请使用“#{}”语法:

div(class="statistic", title="#{fullPage}") #{page}
于 2012-10-25T12:45:15.183 回答
0

只需取消转义您的模板。使用下划线'unescape'。在你的骨干中:

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

改成

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

于 2013-08-04T09:02:37.137 回答
0

试试这个:

div(class="statistic", title=<%= fullPage %>)
于 2012-10-24T20:40:04.597 回答
0

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

下划线手册

_.escape(string) 转义字符串以插入 HTML,替换 &、<、>、"、' 和 / 字符。

于 2012-10-25T17:52:05.557 回答