微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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}}.

原文地址:https://www.jb51.cc/js/157467.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐