mustache.js无法正常工作

时间:2014-02-19 14:14:53

标签: javascript jquery mustache

我尝试使用mustache.js进行模板化但是我的基本代码不起作用请帮助我出错 -

var person = {
    firstName: "Christophe",
    lastName: "Coenraets"
};

var template = "<h1>{{firstName}} {{lastName}}</h1>";
var output = Mustache.render(template, person);
document.getElementById('result1').innerHTML = output;

上面的代码正在运行,但以下代码无效: -

这一行写在我的.html页面中:

<script id="sample_template" type="text/template">
    <h1>{{firstName}} {{lastName}}</h1>
</script>

这一行写在我的.js文件中:

var data ={
   firstName: "Christophe",
   lastName: "Coenraets"
};
var template = $('#sample_template').html();
//console.log(template);  this prints the html content in console
var info = Mustache.to_html(template, data);
$('#result1').html(info);  

5 个答案:

答案 0 :(得分:5)

我得到的解决方案我有胡子服务器端和客户端,我上面描述的问题是,当我尝试在客户端填充占位符时,那些占位符已经在服务器端消耗(becoz我没有说话)必须呈现服务器端以及呈现客户端的文件。所以他们在客户端渲染时没有占位符,所以只有我会显示html标签。

答案 1 :(得分:1)

我和level_0有同样的问题。 服务器端的Django模板也使用与mustache-js相同的标签,即{{}}

这是一个简单的例子,它超越了Django服务器端的模板问题。

<!DOCTYPE HTML>
<html>

<head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/2.3.0/mustache.js"></script>
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
</head>

<body>
    <div id="target">Loading...</div>
    <script id="template" type="x-tmpl-mustache">
        Hello {% templatetag openvariable %} name {% templatetag closevariable %}
    </script>
    <script>
    $(document).ready(function() {

        var template = $('#template').html();
        console.log(template);
        Mustache.parse(template); // optional, speeds up future uses
        var rendered = Mustache.render(template, { name: "Luke" });
        $('#target').html(rendered);

    });
    </script>
</body>

</html>

答案 2 :(得分:1)

如果您像我一样在此线程中结束,因为您在Google上搜索“ Mustache.to_html不是函数”,则可以将Mustache.to_html替换为Mustache.render。第一个已被删除,因此您可能已更新了库。

答案 3 :(得分:0)

从文档中可以看出,.to_html()已被弃用......

答案 4 :(得分:0)

这对我有用:http://jsfiddle.net/evildonald/qK5NT/

js:

$(document).ready(function () {
  var data ={
     firstName: "Christophe",
     lastName: "Coenraets"
  };

  var template = $('#sample_template').html();

  var info = Mustache.to_html(template, data);

  $('#result1').html(info); 
});

HTML:

<script id="sample_template" type="text/template">
  <h1>{{firstName}} {{lastName}}</h1>
</script>