Backbone.js 卓别林JS中的分组集合
我需要从服务器获取一个对象集合,通过一个键参数对其进行分组,并对分组值字段求和。任务相当简单,但我不确定如何在ChaplinJS中实现它。 我已经设置了集合视图。未分组集合的获取和呈现工作正常。 如何实现集合视图的分组和更新 我从groupBy开始,但这并没有起到任何作用:Backbone.js 卓别林JS中的分组集合,backbone.js,collections,grouping,backbone.js-collections,chaplinjs,Backbone.js,Collections,Grouping,Backbone.js Collections,Chaplinjs,我需要从服务器获取一个对象集合,通过一个键参数对其进行分组,并对分组值字段求和。任务相当简单,但我不确定如何在ChaplinJS中实现它。 我已经设置了集合视图。未分组集合的获取和呈现工作正常。 如何实现集合视图的分组和更新 我从groupBy开始,但这并没有起到任何作用: collectionView.collection.fetch().then(function() { collectionView.collection.groupBy(function(myItem) { r
collectionView.collection.fetch().then(function() {
collectionView.collection.groupBy(function(myItem) {
return myItem.get('name');
});
});
由于我正在对子视图的集合进行分组,因此我创建了一个方法,用于在子视图类中获取已分组的集合。同一视图还负责显示未分组的集合。 我获取集合,将其分组,然后将其分配给视图的集合进行渲染
var MyItemsView = CollectionView.extend({
itemView: MyItemView,
template: template,
tagName: 'table',
listSelector: 'tbody',
fetchGrouped: function(params) {
var dfd = new $.Deferred();
var myItems = new MyItemCollection();
var _this = this;
myItems.fetch(params).then(function() {
var grouped = myItems.groupBy(function(item) {return item.get("key");});
var result = [];
$.each(grouped, function(k, v) {
var item = new MyItem();
//Copy all attributes
item.set(v[0].attributes);
//Sum value field
item.set('value', v.reduce(function(mem, value) {return mem + parseFloat(value.get('value'));}, 0));
//Remove non-grouped values, if required
item.unset('key2');
item.unset('key3');
result.push(n);
});
_this.collection = new MyItemCollection(result);
dfd.resolve();
});
return dfd.promise();
}
});
我仍然认为我在滥用卓别林组件约定,可能有更有效的方法来做到这一点。。。但这就是我想到的