0

(Marionette 1.8.3/Backbone.js/Underscore.js 및 TypeScript 사용)ItemView 템플릿에서 Marionette/Backbone 컬렉션의 속성을 합하는 방법은 무엇입니까?

나는 ItemView를 가지고 있습니다. 컬렉션은이 속성을 "횟수"가 다음과 같은 모델의 컬렉션

export class MContent extends backbone.Collection<MContentGroup> { 
    model: MContentGroup; 
    ... 
} 

입니다 : 모델은 컬렉션 인 속성이

export class M1 extends backbone.Model { 
    content: MContent = new MContent(); 
    ... 
} 

:

이 ItemView는 모델이있다 :

export class MContentGroup extends backbone.Model { 
    idAttribute: string = "id"; 
    constructor(...) { 
     ... 
     this.set("Count", Math.max(count, 0)); 
     ... 
    } 
    ... 
} 

내 ItemView 템플릿에서 Count pr 오티스. 일부 검색에서

, 그것은 나타나는 밑줄의가에 대한 권유하는 경우) (감소,하지만 난 내 컬렉션이 구문의 수에 참조 생각하고 방법을 잘 모르겠어요 사용 :

_.reduce(this? Content?, function(memo, Count){ return memo + Count; }, 0); 

답변

1

잘 이해한다면 컬렉션에있는 모든 모델의 count 속성의 합이 필요합니다.

나는 당신에게 당신의 모델 ( http://backbonejs.org/#Collection-toJSON)

배열에 다음 루프의 배열을 제공하고

var MyModels = MyCollection.toJSON(); 
var sum = _.reduce(MyModels, function(model, countSum) { 
    return countSum + model.count; 
}); 

뭔가를 요약 (로 예를 들어 감소)합니다 MyCollection.toJSON()를 사용합니다

suggested by Emile Bergeron 더 나은 방법으로

: 그

편집 등

myCollection.reduce(function(model, memo) {...}) 
+1

당신은'toJSON', 백본 필요가 없습니다 [수집 프록시 ~ 46 기능 밑줄에서 (http://backbonejs.org/#Collection-Underscore-Methods) 그래서 : 직접 수집 방법을 사용하는 것입니다 'myCollection.reduce (function (model, memo) {...}) '를 호출 할 수 있습니다. –

관련 문제