0

(Marionette 1.8.3/Backbone.js/Underscore.jsとTypeScriptの使用)ItemViewテンプレートでMarionette/Backboneコレクションのプロパティを合計するにはどうすればよいですか?

私はItemViewを持っています。

このItemViewがモデルを持っています

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

モデルがコレクションである性質を持っています

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

コレクションは「カウント」プロパティがあり、次のモデルのコレクションです:

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

私のItemViewテンプレートでは、Count prオペラいくつかの検索から

、それが表示されるアンダーのはそのためrecommandedさ)(減らすが、私は、私は私のコレクションと、この構文でそのカウントを参照すると仮定していますかどうかはわかりません使用して:

_.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){...}) 'を呼び出すことができます。 –

関連する問題