1

我是新来的backscorejs 和underscorejs。我发现了一些可以观看的视频资料,但在尝试修改示例时遇到了问题。

这是我的代码:

<html>
<head >
    <meta charset="UTF-8">  
    <script type="text/javascript" src="javascript/jQuery.js"></script>
    <script type="text/javascript" src="javascript/underscore.js"></script>
    <script type="text/javascript" src="javascript/backbone.js"></script>

    <script type="text/template" id="list-template">
      <li><a href="<%= href %>"><%= text %></a></li>
    </script>

    <script type="text/javascript">


        model = new Backbone.Model({
            data: [
                {text: "Google", href: "google.com"},
                {text: "Facebook", href: "facebook.com"},
                {text: "Yahoo", href: "yahoo.com"}
            ]
        });


        var View = Backbone.View.extend({
            el: "#container",
            events: {
                "click button": "render"
            },
            render: function(){
                var data = this.model.get('data');
                for(var i = 0; i<data.length; i++){
                    var variables = { href: data[i].href, text: data[i].text };
                    var li = _.template( $("#list-template").html(), variables );
                    this.$el.find('ul').append(li);
                }
            }
        });

        var view = new View({ model: model });

    </script>
</head>

<body>
    <div id="container">
        <button>Load</button>
        <ul id="list">
    </ul>
    </div>
</body>

它当然不起作用,我找不到原因。如果您看到请回答或指导如何在自定义事件上绑定模板而不是初始化。

4

1 回答 1

5

问题是 JavaScript 是在页面上呈现元素之前执行的。将您的代码包装在$(document).ready()

$(document).ready(function() {
    var model = new Backbone.Model({
    ....
    var view = new View({ model: model });
});
于 2013-01-10T19:45:50.810 回答