(使用Marionette 1.8.3 / Backbone.js / Underscore.js和TypeScript。)
我有一个ItemView。
这个ItemView有一个模型:
export class M1 extends backbone.Model {
content: MContent = new MContent();
...
}
模型的属性是Collection:
export class MContent extends backbone.Collection<MContentGroup> {
model: MContentGroup;
...
}
该集合是以下模型的集合,该模型具有“Count”属性:
export class MContentGroup extends backbone.Model {
idAttribute: string = "id";
constructor(...) {
...
this.set("Count", Math.max(count, 0));
...
}
...
}
在我的ItemView模板中,我想显示Count属性的总和。
从某些搜索来看,似乎建议使用Underscore的reduce(),但我不确定我是如何在这种语法中引用我的集合及其计数:
_.reduce(this? Content?, function(memo, Count){ return memo + Count; }, 0);
答案 0 :(得分:1)
如果我理解得很清楚,您需要收集所有模型的计数属性的总和。
我会使用MyCollection.toJSON(),它将为您提供模型数组(http://backbonejs.org/#Collection-toJSON)
然后在数组上循环并求它(例如使用reduce)
if match:
print(match)
像这样的东西
修改强>
作为suggested by Emile Bergeron,更好的方法是直接使用收集方法:
var MyModels = MyCollection.toJSON();
var sum = _.reduce(MyModels, function(model, countSum) {
return countSum + model.count;
});