2013-03-05 2 views
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 속성을 가져 오면 배열이 전역 변수처럼 작동한다는 것입니다. 따라서 컬렉션의 자체 인스턴스에서 모델을 계산할뿐만 아니라 배열은 모두 컬렉션의 인스턴스를 통해 추가 된 모든 모델을 계산합니다.

컬렉션의 속성을 만드는 방법을 아는 사람은 누구나 자신의 인스턴스에만 집계됩니다.

+0

왜 당신이이 컬렉션 몇 번을 초기화하는 모든 새 컬렉션 인스턴스를 초기화됩니다? 새로운 이벤트를 여러 번 바인드하는 것을 의미합니다. –

+0

데이터가 분리되어 있어야하지만 구조가 동일하므로 (모델과 컬렉션이 동일 함) – user2091464

+2

모델 또는 컬렉션의 다중 인스턴스를 작성하여 동일한 구조를 사용할 수 있습니다. –

답변

1

기능을 초기화하려면 catCount를 이동해야합니까?

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

은 그래서

+0

예,이 문제를 해결하는 것 같았습니다! 감사 – user2091464

관련 문제