未捕获的TypeError:无法读取undefined的属性'replace':underscore.js:1304

时间:2014-11-19 21:46:24

标签: javascript backbone.js

我第一次使用BackboneJS,并试图从数据库中获取数据。

按照不同的教程并尝试理解BackboneJS,我最终编写了以下代码。

var UserModel = Backbone.Model.extend({ 
    defaults: {
        id: 0,
        name: "",
        username: "",
        password: "",
        email: ""
    }
});

var UserCollection = Backbone.Collection.extend({
    model: UserModel,
    url: "db.php"
});

var UserList = Backbone.View.extend({
    el: '.users',
    template: _.template($("#template").html()),

    render: function() {
        console.log("Inside render");
        var that = this;
        var UserItems = new UserCollection();

        UserItems.fetch({
            success: function() {
                console.log(UserItems.toJSON());
                $(this.el).html(that.template({ userItems: UserItems.toJSON() }));
            }
        });
        return this;
    }     
});

var UserRouter = Backbone.Router.extend({
    routes: {
        "": "home"
    }
});

var userList = new UserList(); 

var userRouter = new UserRouter();
userRouter.on('router:home', function() {
    userList.render();
});

Backbone.history.start();

我在控制台中发现以下错误:

Uncaught TypeError: Cannot read property 'replace' of undefined : underscore.js:1304

我不确定我犯的是什么错误但是在搜索时我发现它与id或类在HTML中找不到时有关。

这是我的index.html文件

<div class='users'></div>

<!-- Templates -->
<script type='text/template' id='template'>
  <table>                
    <% _.each(userItems, function(items) { %>           
      <tr>
        <td><%= items.name %></td>
      </tr>          
    <% }); %>   
  </table>
</script>

0 个答案:

没有答案