あなたが私の問題を理解できるように、私が最初に必要なものを示しましょう。私は次のような連絡先ビューを持っています:
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);
}
});
これまでのところ、問題は電話の部分がリストであり、私のモデルが電話の配列を保持していることです。そのテンプレートに動的に配置する必要があります。
私が考えたのは、別のモデルを作成し、このためだけにPhoneとPhoneViewを表示することでした。次に、ContactViewで、次のようなメソッドrender_phonesを作成します。
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;
}
ContactViewテンプレートを次のように変更しました。
template: _.template("Name: <%= name %>
E-mail: <%= email %>
Phones
<%= phones %>"),
しかし、私のrenderメソッドで電話リストをレンダリングしてテンプレート内に配置するにはどうすればよいですか?
このような状況に対処するためのパターンを見つけることができませんでした。そして、コードはあまり良く見え始めています。
ps:これは単なる例です。これが必要なアプリケーションの他の部分がいくつかあります。これは、リスト内のコンテンツを含むサブビューを生成する必要があるビューです。