Свойство модели 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;
}
(Вы также можете поместить итерацию в сам шаблон, если хотите, но я думаю, что в целом предпочтительнее хранить код в представлении, а не в шаблоне.)