1

サブビューをレンダリングする personViews をレンダリングする peopleview があります。Peopleview はレンダリングされ、personviews はレンダリングされますが、サブビューはレンダリングされません。デバッグは、サブビューに移動することを示していますが、レンダリングされていません。

ピープルビュー:

    render:function () {
        $("#page").html(コンパイル済みテンプレート);
        _.each(personViewPointers, 関数 (項目) {
            $(".people-collection").append(item.render().el)
        });
        これを返す
    }

サブビューをレンダリングする個人ビュー。レンダリングはOKですが、サブビューはレンダリングされません。

    render:function () {
        変数データ = {
            モデル:this.model、
            _:_
        };
        this.$el.html(compiledTemplate(data))
        this.addAllSubViews()
        var self = this
        _.each(サブビュー、関数 (項目) {
            self.$el.append(item.render().el)
        });
        これを返す
    }

レンダリングしないサブビュー。

    render:function () {
        this.$el.html(コンパイル済みテンプレート)
        これを返す
    }

4

1 に答える 1

0

ヒント

あなたが使用している$("#page")and$(".people-collection")は、personview を DOM に直接結合します。

代わりにthis.$elandを使用することをお勧めします。this.$(".people-collection")

render:function () {
    this.$el.html(compiledTemplate);
    _.each(personViewPointers, function (item) {
        this.$(".people-collection").append(item.render().el)
    }, this);
    return this
}

コンストラクターで #page 要素を渡します。

var pv = new PersonView({el: '#page'});

しかし、一度new PersonView({el: '#page'})使用すると、「#page」を他の目的で実際に使用することはできません。ビューはイベントなどを要素にバインドしています。したがって、それを要素として追加する方がさらに良いです:

var pv = new PersonView();
$('#page').empty();
$('#page').append(pv.render().this);

これによりpv.remove()、要素を削除して別のビューに置き換えることができます。

于 2012-11-14T08:02:31.893 に答える