Свойство модели Backbone.js получает не определенную ошибку

Я очень плохо знаком с Backbone.js и пытаюсь заставить этот простой пример работать. В основном, в jsFiddle, когда я запускаю код, он говорит мне, что свойство "имя" не определено.

Вот ссылка на скрипку: http://jsfiddle.net/cpeele00/YjUBG/16/

var User = Backbone.Model.extend({});

var UserList = Backbone.Collection.extend({
   model: User
});

var UserView = Backbone.View.extend({
   el: $('#user-list ul'),
   template: _.template($('#user-list-template').html()),
   render: function() {
       this.$el.html(this.template(this.model.toJSON()));
       return this;
   }
});

var user1 = new User();
user1.set({
   firstname: 'Momo',
   lastname: 'Peele'
});

var user2 = new User();
user2.set({
   firstname: 'Bobo',
   lastname: 'Peele'
});


var users = new UserList([user1, user2]);

var userView = new UserView({model: users});

userView.render();

Любая помощь в выяснении этого будет принята с благодарностью.

V / R

Крис

1 ответ

Решение

Поскольку модель на самом деле является коллекцией, вам нужно выполнить итерацию по ней и применить шаблон к каждой модели в коллекции. Одним из способов является использование расширения Underscore Collection.each:

render: function() {
    // clear the view
    this.$el.empty();

    // save a reference to the view object
    var self = this;

    // iterate over the collection
    this.model.each(function(singleModel) {

        // render the model
        self.$el.append(self.template(singleModel.toJSON()));
    });

    return this;
}

Вот обновленная Скрипка.

(Вы также можете поместить итерацию в сам шаблон, если хотите, но я думаю, что в целом предпочтительнее хранить код в представлении, а не в шаблоне.)

Другие вопросы по тегам