backbone.js にいくつかのビューがあり、もう一方の子になりたいと思っています。そこで、次のコードを作成しました。
var app = app || {} ;
app.ProjectCardView = Backbone.View.extend({
el: $('.list'),
template: _.template( $("#tpl-project-card-summary").html() ),
initialize: function() {
this.render();
},
render: function() {
return this.$el.html( this.template() );
}
});
app.DashboardView = Backbone.View.extend({
el: $('.contentwrap'),
template: _.template( $("#tpl-dashboard").html() ),
initialize: function() {
this.render();
this.addProjects();
},
render: function() {
//console.log(this.template());
this.$el.html( this.template() );
},
addProjects: function() {
var pcv = new app.ProjectCardView();
}
});
app.dash = new app.DashboardView;
DashboardView は完全にレンダリングされますが、ProjectCardView を作成すると、ビューが初期化されないように見えるため、テンプレートが空で、el が設定されていません。初期化関数で el を設定すると、$el はまだ設定されていません。私は自分が間違っていることを見ることができません。
編集:問題が見つかったようです。$('.list') は最初のビューによって導入された要素であるため、最初のビューが DOM でレンダリングされていても、2 番目のビューがそれを見つけようとするまでにはレンダリングされません。
それで、どうすればそれを修正できますか?