【发布时间】:2012-01-29 06:00:44
【问题描述】:
我刚开始使用 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 Inspector 显示如下:
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 可以,而不是script,因为无论哪种情况,我都会选择.html()。这是一个糟糕的假设吗?
【问题讨论】:
-
你如何调用你的模板?
-
添加了更多实现细节
-
是的,使用
<div>是个问题。请参阅下面的答案...
标签: javascript jquery json github mustache