我可以在玉石teplate内逃脱花括号吗? (我在node.js中使用jade)
我想将jQuery模板呈现给客户端。 我要逃避的部分看起来像这样:
div(class='clear')
script(id='BoardListTemplate', type='text/x-jQuery-tmpl')
<p>${Title}</p>
<ul id="${Id}" class="IterationBoardList">
<li class="AddNewItem">Add new Item</li>
{{tmpl(Items) "#BoardListItemTemplate"}}
</ul>
script(id='BoardListItemTemplate', type='text/x-jQuery-tmpl')
<li class="Item" id="${{$data.Id}}">
${$data.Description}<br />
Assigned to: ${$data.AssignedTo}<br/>
StoryPoints: ${$data.StoryPoints}</li>
script(src='/javascripts/Scrummr.Engine.js', id='BoardListItemTemplate', type='text/javascript')
非常感谢
答案 0 :(得分:11)
您必须在脚本块内的每一行前面使用竖线(|)符号。
有关示例,请参阅https://gist.github.com/2047079。
答案 1 :(得分:3)
这里有两件不同的事情。
Jade使用空格来暗示文档结构;缩进很重要,换行很重要,Jade希望每一行都能从它创建HTML标签开始。
如果您想要提供一些您不希望它转换的东西 - 例如,原始HTML或脚本或您希望在客户端上呈现的原始模板 - 您可以
1)用竖线字符(|)开始每一行,然后是原始文本。 Jade docs的示例:
p
| foo bar baz
| rawr rawr
| super cool
| go jade go
2)通过用句点结束前一个容器标签来启动原始文本块。例如,再次来自Jade docs:
p.
foo asdf
asdf
asdfasdfaf
asdf
asd.
另外,Jade执行字符串插值,专门处理某些字符或字符,您可能需要在不希望插值的上下文中进行转义。这是这个问题的一部分(逃避花括号)。翡翠实际上并没有特别对待{但是它确实对待#{如果你需要#{,你可以将其作为\#{。
转义答案 2 :(得分:0)
Jade在行的末尾提供了一个点(。)运算符,允许您转义子缩进块内的所有内容。
script(id='BoardListTemplate', type='text/x-jQuery-tmpl').
// Everything inside here is completely escaped.
<p>${Title}</p>
<ul id="${Id}" class="IterationBoardList">
<li class="AddNewItem">Add new Item</li>
{{tmpl(Items) "#BoardListItemTemplate"}}
</ul>
- // outside here it's all JADE.
h1 How about a JADE heading
script(id='BoardListItemTemplate', type='text/x-jQuery-tmpl').
// back to escaped script in here.
<li class="Item" id="${{$data.Id}}">
${$data.Description}<br />
Assigned to: ${$data.AssignedTo}<br/>
StoryPoints: ${$data.StoryPoints}</li>
script(src='/javascripts/Scrummr.Engine.js', id='BoardListItemTemplate', type='text/javascript').
最后的DOT(。)是重要的部分。