首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chaplin JS中的分组集合

Chaplin JS中的分组集合
EN

Stack Overflow用户
提问于 2014-08-03 19:22:15
回答 1查看 121关注 0票数 0

我需要从服务器获取一个对象集合,按键参数和总和分组值域对其进行分组。这项任务相当简单,但我不确定如何在ChaplinJS中实现它。我已经设置了集合视图。未分组集合的获取和渲染工作正常。如何实现集合视图的分组和更新?

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

代码语言:javascript
复制
collectionView.collection.fetch().then(function() {
  collectionView.collection.groupBy(function(myItem) {
    return myItem.get('name');
  });
});
EN

回答 1

Stack Overflow用户

发布于 2014-08-04 19:01:56

由于我要对子视图的集合进行分组,因此我创建了一个方法来获取subview类中的分组集合。相同的视图也负责显示未分组的集合。我获取集合,对其进行分组,然后将其分配给视图的集合以进行呈现。

代码语言:javascript
复制
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();
    }
});

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25104158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档