Backbone: uma lista de visualizações dentro de uma visão
Deixe-me mostrar o que preciso primeiro para entender o meu problema. Eu tenho uma visão de contato como:
ContactView = Backbone.View.extend({
template: _.template("Name: <%= name %>
E-mail: <%= email %>
Phones
<%= label1 %> - <%= number1 %>
<%= label2 %> - <%= number2 %>"),
render: function() {
var contact = this.template(this.model.toJSON());
this.$el.html(contact);
}
});
Até aí tudo bem, o problema é que a parte dos telefones é uma lista, o meu modelo contém uma série de telefones, e eu preciso colocá-lo dinamicamente nesse modelo.
O que eu pensei foi criar outro modelo e ver Phone e PhoneView apenas para isso. E então no ContactView eu criaria um método render_phones, como:
render_phones: function() {
var phones = this.model.get('phones');
var phones_str = "";
for (var i in phones) {
var phone = new Phone(phones[i]);
var phoneView = new PhoneView({model: phone});
phones_str += phoneView.render();
}
return phones_str;
}
Eu mudei o modelo ContactView para isso:
template: _.template("Name: <%= name %>
E-mail: <%= email %>
Phones
<%= phones %>"),
Mas como tornar meu método de renderização obter a lista de telefones renderizada e colocada dentro do modelo?
Eu não consegui encontrar um padrão para lidar com situações como esta. E o código está começando a não parecer tão bom.
ps: Este é apenas um exemplo, existem várias outras partes do meu aplicativo que eu preciso disso, uma visão que precisa gerar subviews com conteúdo em uma lista.