我想在genshi模板中渲染小胡子/手柄模板。由于小胡子标签,Genshi似乎引发了TemplateSyntaxError。
我尝试在<script>
内外发布here的CDATA代码:
<script id="some-template" type="text/x-mustache-template">
<![CDATA[
... my template here ...
]]>
</script>
由于我做$('#some-template').html()
,Handlebars只会将CDATA标记与html的其余部分一起呈现,这会影响结果。
<![CDATA[
<script id="some-template" type="text/x-mustache-template">
... my template here ...
</script>
]]>
这样,浏览器就会评论第一个<script>
代码。
此外,使用<!-- -->
对CDATA进行评论会引发错误,并且在/* */
脚本内部只会导致Handlebars按原样打印。
有没有办法告诉Genshi不要解析模板的一部分?
谢谢!
答案 0 :(得分:1)
不确定这是否有帮助,但我遇到了类似的问题。
我有一大堆标记正在通过XML解析器运行,该解析器将一个把手模板添加到DOM中,稍后将通过脚本进行编译。
为了让把手模板通过XML解析器,我需要使用CDATA块进行换行,但这会导致类似的问题。如果我将CDATA放在脚本标记内,那么模板标记的第一位就会被注释掉。如果我把它们放在外面,整个模板都会被注释,并且无法通过脚本调用来编译它。
我能够通过插入HTML注释作为不必要的盾牌来解决它,如下所示:
<div id="contentChunk">
<div id="blah" class="foo">
Some vanilla HTML being added.
</div>
<script id="hbTemplate" type="text/x-handlebars-template">
<![CDATA[
<!-- blocker comment: first html node of handlebars script gets swallowed. -->
{{#each data.items}}
<div id="item{{id}}">{{{name}}}</div>
{{/each}}
<!-- ]]> -->
</script>
</div>
我还在评论中包含了尾随CDATA关闭标记,否则我得到了一个文字]]&gt;渲染。
答案 1 :(得分:1)
您可以将CDATA分隔符放在小胡子注释中:
<script id="some-template" type="text/x-mustache-template">
{{! <![CDATA[ }}
... my template here ...
{{! ]]> }}
</script>
(这与使用// <![CDATA[
和// ]]>
用于JavaScript脚本的技巧基本相同。)