2

私は現在、次のように親ビューで子ビューをレンダリングしようとしています:

var ParentView = Backbone.View.extend({

    initialize: function(){
        this.render();
        this.childView = new ChildView({el: '#id1', model: this.model.get('collection').at(index)});
    },

    render: function(){
        this.$el.html(ich.parent_template(this.model.toJSON()));
    }
}):

親テンプレートはかなり単純で、次のようなものです。

<script id="parent_view" type="text/html">
<div>
    <h1 class="section-title">{{ title }}</h1>
     <div id="id1"></div>
</div>
</script>

私は childView を次のようにレンダリングしたかった:

var ChildView = Backbone.View.extend({

    initialize: function(){
        this.render();
    },

    render: function(){
        this.$el.html(ich.child_template(this.model.toJSON()));
    }
}):

しかし、これを行うと何も表示されません。{el: '#id1'} を含めずに子ビューをインスタンス化し、それを親ビューから正しい div にレンダリングすると、すべて正常に動作します。上記で概説した方法で機能しない理由について、私はさらに混乱しています。

子ビューの el を指定することの意味を完全に誤解していますか? 私はこの応答に従おうとしていましたが、まったくうまくいきませんでした。

4

2 に答える 2

3

template時間通りに初期化することは、まだロードされていないことを知っています。作成されていないため、親ビューは「#id1」で要素を見つけられませんでした。render次のように呼び出すことができる場合のみchildView

render: function(){
    this.$el.html(ich.parent_template(this.model.toJSON()));
    this.childView = new ChildView({el: '#id1', model: this.model.get('collection').at(index)});
}
于 2013-06-22T05:33:52.793 に答える