1

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 番目のビューがそれを見つけようとするまでにはレンダリングされません。

それで、どうすればそれを修正できますか?

4

1 に答える 1