Я только начал использовать Усы, и мне это до сих пор нравится, но это меня озадачило.
Я использую Gist API GitHub, чтобы раскрыть мои суть, и часть того, что я хочу сделать, - включить функцию встраивания в мою страницу. Проблема в том, что усы, похоже, не хотят иметь ничего общего с моим динамическим тегом скрипта.
Например, это прекрасно работает:
<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>
И я получаю тот же результат в Инспекторе:
GET https://gist.github.com/%7B%7B%7Bid%7D%7D%7D.js 404 (Not Found)
Как получить правильные значения для встраивания в тег script?
EDIT
Я внедряю шаблон следующим образом (в 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()
. Это плохое предположение?