Усы JS Templating - Как вставить переменную в строку тега скрипта?
Я только начал использовать Усы, и мне это нравится до сих пор, но это меня озадачило.
Я использую 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)
Как получить правильные значения для вставки в тег скрипта?
РЕДАКТИРОВАТЬ
Я впрыскиваю шаблон следующим образом (в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 (это не тег script, это проблема?) (Это скрыто):
<div id="mustache_gist" style="display: none;">
{{#gists}}
<!-- see above -->
{{/gists}}
</div>
Я предполагаюdiv
хорошо, а неscript
потому что в любом случае я тяну.html()
, Это плохое предположение?