2013-01-24 74 views
1

我想渲染一個genshi模板中的小鬍子/句柄模板。由於鬍鬚標籤,Genshi似乎引發了TemplateSyntaxError。如何渲染Genshi內的JavaScript模板?

我試圖把CDATA標籤,張貼here,無論是內外<script>

<script id="some-template" type="text/x-mustache-template"> 
    <![CDATA[ 
    ... my template here ... 
    ]]> 
</script> 

,因爲我$('#some-template').html(),把手正好與HTML的其餘部分,呈現CDATA標籤一起哪些混亂的結果。

<![CDATA[ 
<script id="some-template" type="text/x-mustache-template"> 
    ... my template here ... 
</script> 
]]> 

這樣,瀏覽器評論第一個<script>標籤。

此外,使用<!-- -->評論CDATA會引發錯誤,並且在/* */的腳本內部僅使Handlebars按原樣進行打印。

有什麼辦法可以告訴Genshi不要解析模板塊?

謝謝!

+1

端了包裝它像我的第一次例如,然後使用'Handlebars.compile($(selector).html()。replace(/ /,''))'這是不理想的......對此有何想法? –

回答

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結束標記,否則我得到一個文字]]>進行渲染。

+0

感謝您的輸入。如果我沒有記錯的話,那也發生在我身上,這就是爲什麼我在編譯模板之前最終刪除了CDATA標籤(請查看我的評論)。 –

1

你可以把鬍子評論中的CDATA分隔符:

<script id="some-template" type="text/x-mustache-template"> 
    {{! <![CDATA[ }} 
    ... my template here ... 
    {{! ]]> }} 
</script> 

(這基本上是相同的伎倆使用// <![CDATA[// ]]>爲JavaScript腳本。)

+0

布魯諾,很好的建議,但不幸的是(在我的情況下)尾部}}打破

  • 11. Angular2渲染模板
  • 12. Ember.js模板渲染
  • 13. PHP - 渲染模板
  • 14. 如何渲染EventListener中的模板?
  • 15. 如何渲染模板中的Archetypes?
  • 16. 如何在Meteor中渲染另一個模板後插入或渲染模板?
  • 17. 在javascript中渲染html.erb模板
  • 18. 渲染Angularjs模板從控制器內
  • 19. 的NodeJS渲染EJS模板
  • 20. Django的appliation模板渲染
  • 21. 模板渲染後的Meteorjs
  • 22. 玩!渲染我的模板
  • 23. Django的:模板渲染
  • 24. Grails的渲染模板
  • 25. 如何在模板中渲染has_many?
  • 26. 如何重新渲染dom-if模板
  • 27. Django:如何修復模板渲染?
  • 28. 如何在nodejs中渲染doT.js模板?
  • 29. 如何將erb模板渲染到字符串內的動作?
  • 30. Genshi嵌套匹配模板