我刚开始使用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>
Chrome检查器显示如下:
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>
我在检查器中得到了相同的结果:
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
比使用script
更好,因为无论哪种情况下,我都要提取.html()
。这个假设不太妥当吗?
<div>
是问题所在。请看下面我的回答... - Ates Goral