0

そのため、コレクション内のモデルをカテゴリ別に数えようとしています。

これは私のコードです:

App.Collections.channls = Backbone.Collection.extend({
    model:    App.Models.Channel,
    catCount: new Array(),

    initialize: function() {
      this.bind('add', this.onModelAddedd, this);
    },

    onModelAdded: function( model, collection ) {
         if (this.catCount[model.get('category_id')] == undefined) {
           this.catCount[model.get('category_id')] = 0;
         }
         this.catCount[model.get('category_id')]++;
    },

    returnCount: function() { return this.catCount }
});

このコレクションを数回初期化します。

問題はcatCount、コレクションのプロパティを取得すると、配列がグローバル変数のように機能することです。そのため、コレクションの独自のインスタンスからモデルをカウントしただけでなく、配列はコレクションのすべてのインスタンスに追加されたすべてのモデルをカウントしています。

コレクションのプロパティを独自のインスタンスにのみカウントする方法を知っている人はいますか?

4

1 に答える 1

1

たぶん、関数を初期化するために catCount を移動する必要がありますか?

initialize: function( ) {
   this.catCount= new Array();
   this.bind( 'add', this.onModelAddedd, this );
}

したがって、新しいコレクションインスタンスごとに初期化されます

于 2013-03-05T10:07:08.217 に答える