javascript – Mustache JS Templating – 如何在脚本标记字符串中嵌入变量?

我刚开始使用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是好的而不是脚本,因为在任何一种情况下,我都拉着.html().这是一个不好的假设吗?

解决方法

要避免在Mustache中自动转义,请使用{{{token}}}而不是{{token}}.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...