Шаблоны Mustache JS - Как мне встроить переменную в строку тега скрипта?

Я только начал использовать 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 () . Это неверное предположение?

8
задан Evan 29 January 2012 в 06:27
поделиться