无法将数据传递给车把模板

时间:2017-03-05 21:26:36

标签: node.js handlebars.js templating

我正在https://www.youtube.com/watch?v=3zVYH16yogQ&t=58s关注在手柄模板中渲染数据的教程,但似乎无法将数据传递给模板。

我的global.js文件:

    $(document).ready(function(){



var source = $("#first-template").html();
var template = Handlebars.compile(source);


var context = {
  title1 : "hello",
  body1 : "body1"
}

var el_html = template(context);

$("#render_here").html(el_html);
$("#render_here_again").html(el_html);


});

我的观点文件:

    <html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <link href="http://fontawesome.io/assets/font-awesome/css/font-awesome.css" rel="stylesheet" media="screen">
    <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>

  <script type="text/javascript" src="../javascripts/global.js"> </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.js"></script>


</head>
<body>
    <button name = "click" id ="click" >click </button>
<div id ="render_here">
  first
</div>

<div id ="render_here_again">
  second
</div>

<script id = "first-template" type="text/x-handlebars-template">
          <div>
                <h1 style ="color:green">{{title1}}</h1>
                <h2 style ="color:blue">{{body1}}</h2>
        </div>
</script>
</body>
</html>

在渲染页面时,应加载上下文变量中的数据,但它是空白的。当我在控制台中记录它时,我可以看到该对象,当我在console.log(el_html)时,脚本模板出现但没有上下文。知道我做错了吗?

1 个答案:

答案 0 :(得分:0)

这对我有用。这是代码 - 我做的唯一真正的改变是将global.js内联并使jQuery的版本现代化:

<!DOCTYPE html>
<html>
<head>
    <title>Page Title</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script>
        $(document).ready(function(){

            var source = $("#first-template").html();
            var template = Handlebars.compile(source);

            var context = {
                title1 : "hello",
                body1 : "body1"
            };

            var el_html = template(context);

            $("#render_here").html(el_html);
            $("#render_here_again").html(el_html);

        });
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.js"></script>
</head>
<body>

<button name = "click" id ="click" >click </button>
<div id ="render_here">
    first
</div>

<div id ="render_here_again">
    second
</div>

<script id = "first-template" type="text/x-handlebars-template">
    <div>
        <h1 style ="color:green">{{title1}}</h1>
        <h2 style ="color:blue">{{body1}}</h2>
    </div>
</script>

</body>
</html>

此外,您正在使用古老版本的jQuery。我会转向更近期的事情 - 至少2.x.没有理由再使用v1.x了。

相关问题