Я только начал использовать 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)
Как мне получить правильные значения для встроить в тег скрипта?
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);
});
}
Фактический шаблон находится внутри партиала рубина, но он заключен в div (не тег скрипта, это проблема?) (он скрыт):
<div id="mustache_gist" style="display: none;">
{{#gists}}
<!-- see above -->
{{/gists}}
</div>
Я предполагаю, что div
подходит, а не скрипт
, потому что в любом случае я Я извлекаю .html ()
. Это неверное предположение?