Yep, its correct behavior - you trying to render collection via model view. Collection doesnt have property Color and you have an error . Checkout fiddle
$(function(){
var Vehicle = Backbone.Model.extend(),
VehicleCollection = Backbone.Collection.extend({ model : Vehicle});
var vehicle1 = new Vehicle({Color:'blue', Type: 'car'}),
vehicle2 = new Vehicle({Color:'blue', Type: 'bike'}),
vehicle3 = new Vehicle({Color:'blue', Type: 'rickshaw'}),
vehicleCollection = new VehicleCollection([vehicle1,vehicle2,vehicle3]);
var itemView = Backbone.View.extend({
template: _.template($('#vehicleItemTemplate').html()),
render: function(){
var renderedContent = this.template(this.model.toJSON());
this.$el.html( renderedContent);
return this;
}
}),
collectionView = Backbone.View.extend({
render: function () {
this.collection.each(this.addOne, this);
return this;
},
addOne: function(mod) {
var item = new itemView({ model: mod });
this.$el.append( item.render().el );
}
});
var vehicleView = new collectionView({
el: "#vehicles",
collection:vehicleCollection
});
vehicleView.render();
});