javascript - 主干 - 无法读取未定义的属性 'get'

标签 javascript backbone.js underscore.js

这是我第一次真正尝试使用服务器端点创建 Backbone 应用程序,我发现自己遇到了一些障碍。

我的 html 中有一个下划线模板:

    <tbody>
      <% _.each(users, function(user) { %>
        <tr>
          <td><% user.get('firstname') %></td>
          <td><% user.get('lastname') %></td>
          <td><% user.get('age') %></td>
          <td></td>
        </tr>
      <% }); %>
    </tbody>

这是我的模型/ View /集合:

var Users = Backbone.Collection.extend({
        url: '/UMA.Service/Service1.svc/',
        Model: User
    });

var User = Backbone.Model.extend({
    defaults: {
        "firstname": "",
        "lastname": "",
        "age": null
    }
});

var UserList = Backbone.View.extend({
    el: '.page',
    render: function() {
        console.log(this.collection.toJSON());
        var template = _.template($('#user-list-template').html(), {users: this.collection.model});
        this.$el.html(template);

    }, 
    initialize: function() {    
        var that = this;        
        this.collection = new Users();
        this.collection.fetch({
            success: function(User) {
                that.render();
            }
        });

    }
});

我不太确定我哪里搞砸了。我认为这可能必须是我在我的收藏或模型中调用某些东西的方式,但我已经找了一段时间但找不到它(如果有的话)。有人能帮我吗?

我的控制台在 View 中的渲染函数中登录,它返回了我的所有数据,所以我看不出为什么这不起作用。有人有什么想法吗?

最佳答案

代替:

_.each(users, function(user) {...

尝试做:

users.each(function(user) { ...

Backbone 将各种下划线方法“代理”到 backbone 对象(在本例中为 Collection 对象)。有关更多信息,请查看:http://backbonejs.org/#Collection-Underscore-Methods并向下滚动到一些示例。

编辑:

@Bojangels 是对的。您也不想将 this.collection.model 传递到模板中。您只想传递集合(在本例中)。该集合“包含”您关心的模型。 Collection.model 是集合的一个属性,表示集合包含的模型类型,而不是模型本身的特定实例。

正如@Tallmaris 在下面的评论中所述,缺少的一 block 拼图是使用 <%=输入值:

  <td><%= user.get('firstname') %></td>

关于javascript - 主干 - 无法读取未定义的属性 'get',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24368324/

相关文章:

javascript - 如何提取/哪里具有数组属性的 javascript 列表

javascript - 下拉菜单不显示所选选项

javascript - node.js 时区独立 Date.now()

Javascript HTML5 音频 - 如果已经播放,不播放声音?

javascript - 通过服务从 api 调用返回到组件的数据是一个对象,似乎需要成为 Angular 的数组

javascript - 从主干模板上的集合中获取数据

javascript - 在创建新 View 时在相似 View 上使用类而不是 id

javascript - 我可以在长度仅为 4 的数组的索引 6 中插入一个值吗?

backbone.js - 简单的按钮点击主干

javascript - 下划线js替换对象中的项目