Para acceder a los objetos de una colección en una plantilla de Handlebars tienes que pasar dichos objetos como un parámetro a la función template. Si utilizas Backbone y tu colección de objetos es una colección de modelos, puedes utilizar la función toJSON para convertirlos en objetos javascript y que puedan ser interpretados por Handlebars.
Supongamos que tenemos los siguientes objetos (modelos)
app.models.Equipo = Backbone.Model.extend({ initialize: function () { }, sync: function (method, model, options) { if (method === 'read') { app.adapters.equipos.findById(parseInt(this.id)).done(function (data) { options.success(data) }) } } }) app.models.EquipoCollection = Backbone.Collection.extend({ model: app.models.Equipo, sync: function (method, model, options) { if (method === 'read') { app.adapters.equipos.findAll().done(function(data){ options.success(data) }) } } })
y nuestra plantilla es la siguiente
<div class="row"> {{#each equipos}} <div class="col-6"> <a href="equipos/#{{name}}" class="thumbnail text-center"> <img src="{{logoUrl}}"/> </a> </div> {{/each}} </div>
Entonces para pasar nuestros objetos a la plantilla, lo haríamos de la siguiente manera
app.views.EquiposListView = Backbone.View.extend({ initialize: function(){ this.equipos = new app.models.EquipoCollection() this.equipos.on('reset', this.render, this) this.equipos.fetch({reset: true}) }, render: function(){ this.$el.html(this.template({equipos: this.equipos.toJSON()})) return this } })
Notesé el uso de la función toJSON
Fuentes:
http://stackoverflow.com/questions/12439471/rendering-handlebars-template-with-backbone
http://stackoverflow.com/questions/14170298/how-to-access-backbone-model-properties-in-a-handlebar-template