Backbone table view consume fila: ¿cómo estructurar?

Tengo una colección de modelos que deseo representar en una vista de tabla. Cada modelo debe estar representado por una sola fila en la tabla, y esta fila debe generarse utilizando una plantilla. Debería poder adjuntar controladores de eventos a esa fila (por ejemplo, hacer clic), que en caso de alerta de eventos cierta información específica con respecto al modelo asociado con esa fila.

Una forma común en que he visto cosas similares a esto es dividir cada fila en su propia vista y tener una vista principal (digamos la tabla en este caso) use la vista de fila para generar el html para incluirlo en su código . Sin embargo, no puedo entender cómo funciona esto con las plantillas.

En este caso, no puedo adjuntar eventos específicamente a RowView ya que no tiene ninguna referencia a un elemento dom (this.el para el backbone), simplemente devuelve una cadena. ¿Cómo puedo lograr lo que quiero, mientras uso una plantilla a su máxima capacidad?

La pregunta no es específicamente acerca de los eventos, las plantillas o el uso de vistas anidadas, sino más bien la forma correcta de usar Backbone para lograr este tipo de resultados.

Código de ejemplo (también en unviolín):

<code>/** View representing a table */
var TableView = Backbone.View.extend({
    tagName: 'table',
    render: function() {
        var rows = _.map(this.collection.models, function(p) {
            return new RowView({model: p}).render();                        
        });
        $('body').html(this.$el.html(rows.join('')));
    }
});

/** View representing a row of that table */
var RowView = Backbone.View.extend({
    render: function() {
        // imagine this is going through a template, but for now
        // lets just return straight html.
        return '<tr>' + 
                '<td>' + this.model.get('name') + '</td>' + 
                '<td>' + this.model.get('age') + '</td>' +
               '</tr>';
    }
});

var data = [
    {'name': 'Oli', 'age': 25},
    {'name': 'Sarah', 'age': 20}];

/** Collection of models to draw */
var peopleCollection = new Backbone.Collection(data);
var tableView = new TableView({collection: peopleCollection});
tableView.render();
</code>

¡Gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta