下划线模板不在骨干中呈现

时间:2013-07-09 07:29:31

标签: javascript jquery backbone.js underscore.js

我正在尝试使用backbone.js,underscore.js和jquery的最新生产版本的一个简单示例(请参阅下面的完整代码)。 但是我无法在屏幕上显示任何内容。我已经尝试记录这个。$ el到控制台日志,它似乎有效,html var包含来自测试模板的正确解析的HTML。但是浏览器窗口中没有显示任何内容。

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>testing Backbone.js</title>
  </head>
  <body>

      <script type="text/template" id="test-template">
      <div id="container">
          <%= test %>
      </div>
      </script>

      <script type="text/javascript" src="js/lib/jquery.js"></script>
      <script type="text/javascript" src="js/lib/underscore.js"></script>
      <script type="text/javascript" src="js/lib/backbone.js"></script>
      <script type="text/javascript">
        var testView = Backbone.View.extend({
            el: $("#container"),
            template: _.template($('#test-template').html()),
            render: function() {
                var html = this.template({test: 'hello World!'});
                this.$el.html(html);
                return this;
            }
        });

        $(document).ready(function() {
            var test = new testView();
            test.render();
        });
      </script>
  </body>
</html>

2 个答案:

答案 0 :(得分:5)

没有带有id =“container”的元素来附加模板。如果你替换

el: $("#container")

el: $('body')

应该出现的东西

答案 1 :(得分:1)

没有渲染代码。模板内容不是DOM的可见部分; 试试这个:

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>testing Backbone.js</title>
  </head>
  <body>
      <div id="output"></div>
      <script type="text/template" id="test-template">
      <div id="container">
          <%= test %>
      </div>
      </script>

      <script type="text/javascript" src="js/lib/jquery.js"></script>
      <script type="text/javascript" src="js/lib/underscore.js"></script>
      <script type="text/javascript" src="js/lib/backbone.js"></script>
      <script type="text/javascript">
        var testView = Backbone.View.extend({
            el: $("#container"),
            template: _.template($('#test-template').html()),
            render: function() {
                var html = this.template({test: 'hello World!'});
                $("#output").html(html);
                return this;
            }
        });

    $(document).ready(function() {
        var test = new testView();
        test.render();
    });
  </script>