我刚开始使用Mustache,到目前为止我喜欢它,但这让我感到困惑.
我正在使用GitHub gist API来提取我的要点,我想做的部分内容是将嵌入功能包含在我的页面中.问题是Mustache似乎不想与我的动态脚本标签有任何关系.
例如,这很好用:
<div class="gist-detail"> {{id}} <!-- This produces a valid Gist ID --> </div>
此外,这非常有效:
<div class="gist-detail"> <script src='http://gist.github.com/1.js'></script> <!-- Produces the correct embed markup with Gist ID #1 --> </div>
如果我试图把它们拉在一起,那就会出现严重错误:
<div class="gist-detail"> <script src='http://gist.github.com/{{id}}.js'></script> <!-- Blows up! --> </div>
GET https://gist.github.com/%7B%7Bid%7D%7D.js 404 (Not Found)
…看起来像我的东西是逃避或诸如此类的奇怪,所以我切换到原始语法:
<div class="gist-detail"> <script src='http://gist.github.com/{{{id}}}.js'></script> <!-- Blows again! --> </div>
我在Inspector中得到了相同的结果:
GET https://gist.github.com/%7B%7B%7Bid%7D%7D%7D.js 404 (Not Found)
编辑
我按如下方式注入模板(在document.ready中:
function LoadGists() { var gistApi = "https://api.github.com/users/<myuser>/gists"; $.getJSON(gistApi,function (data) { var html,template; template = $('#mustache_gist').html(); html = Mustache.to_html(template,{gists: data}).replace(/^\s*/mg,''); $('.gist').html(html); }); }
实际模板是在ruby部分内部,但是它包含在div中(不是脚本标记,这是一个问题?)(隐藏):
<div id="mustache_gist" style="display: none;"> {{#gists}} <!-- see above --> {{/gists}} </div>
我假设div是好的而不是脚本,因为在任何一种情况下,我都拉着.html().这是一个不好的假设吗?
解决方法
要避免在Mustache中自动转义,请使用{{{token}}}而不是{{token}}.