卓别林JS中的分组集合



我需要从服务器中获取对象集合,按关键参数分组并求和分组值字段。相当简单的任务,但我不确定如何在ChaplinJS中实现它。我已经设置了集合视图。抓取和渲染未分组的集合工作得很好。如何实现集合视图的分组和更新?

我从groupBy开始,但这没有做任何事情:

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();
    }
});

我仍然认为我滥用了卓别林的组件约定,可能有更有效的方法来做到这一点…这就是我想出来的

相关内容

  • 没有找到相关文章

最新更新