4

モデルがビューのコレクションに追加されると、次のエラーをスローする複合ビューがあります。Uncaught ItemViewContainerMissingError: Missing itemViewContainer

これが私のcompositeViewです:

// VIEW
B.ScrapeUpdate.View = Backbone.Marionette.CompositeView.extend({
    // ITEM VIEW
    itemView: B.ScrapeUpdateItem.View,

    // ITEM VIEW CONTAINER
    itemViewContainer: 'tbody',

    // TEMPLATE
    template: Handlebars.compile(templates.find('#scrape-update-template').html()),

    // INITIALIZE
    initialize: function(options){
        _.bindAll(this);

        // Bind events
        this.collection.bind('reset', this.renderCollection);
    }
});

コレクションにバインドする前に初期化に次のコードを追加すると、バグが修正されることがわかりました。

    var html = this.renderModel();
    this.$el.html(html);

正常に動作する他の複合ビューがあるのに、なぜこの 2 行のコードが必要なのかわかりません。以下は、機能する複合ビューの例です。

B.BusinessSearchResults.View = Backbone.Marionette.CompositeView.extend({
    // ITEM VIEW
    itemView:B.Business.View,

    // ITEM VIEW CONTAINER
    itemViewContainer: 'tbody',

    // TEMPLATE
    template: Handlebars.compile(templates.find('#business-search-results-template').html()),

    // INITIALIZE
    initialize: function(options){
        _.bindAll(this);

        // Bind events
        this.collection.bind('reset', this.renderCollection);

    }
});

ビューに違いはないように見えるので、何が悪いのかわかりません。

4

1 に答える 1

0

 // INITIALIZE
    initialize: function(options){
        _.bindAll(this);

        // Bind events
        this.collection.bind('reset', this.renderCollection);
    }

これらのコード行は必要ありません。CompositeView は、すぐに使用できるようにこれを行います。このコードが含まれていることが問題の原因である可能性があります。行をコメントアウトして、this.collection.bindまだエラーが発生するかどうかを確認してください。

于 2013-01-23T04:34:21.540 に答える