Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 带主干的分组集合和视图。木偶_Backbone.js_Marionette - Fatal编程技术网

Backbone.js 带主干的分组集合和视图。木偶

Backbone.js 带主干的分组集合和视图。木偶,backbone.js,marionette,Backbone.js,Marionette,我有一个要按月分组的文档主干集合,以便将在同一个月内创建的所有文档分组在一起。我知道我基本上可以通过以下方式实现: var byMonth = documents.groupBy(function(doc){ return this.get('date').getMonth() }); 既然我有了byMonth数组,那么设置主干视图的最佳方法是什么?该视图在项目添加到集合时自动更新,其中一个文档的日期更改,等等,以便文档自动移动到正确的组中,视图也相应地更新 另外,我还想显示每个月的汇总数

我有一个要按月分组的文档主干集合,以便将在同一个月内创建的所有文档分组在一起。我知道我基本上可以通过以下方式实现:

var byMonth = documents.groupBy(function(doc){
  return this.get('date').getMonth()
});
既然我有了
byMonth
数组,那么设置主干视图的最佳方法是什么?该视图在项目添加到集合时自动更新,其中一个文档的日期更改,等等,以便文档自动移动到正确的组中,视图也相应地更新

另外,我还想显示每个月的汇总数据(例如,文档数量等)


Marionette的CompositeView非常适合这种情况,但我不确定是否以及如何使其与分组集合一起工作?

您可以创建一个新的byMonth集合,并绑定一个函数,以便在每次文档集合更改时重置它

控制器

App.Controller = function(){
  this.documents = new DocumentCollection();
  this.byMonthCollection = new ByMonthCollection(); 
  this.byMonthView = new ByMonthView({collection: this.byMonthCollection});
}

_.extend(App.Controller.prototype, {
  start: function() {
    this.documents.bind("change", _.bind(this.groupByMonth, this));
    this.documents.fetch();
  },
  groupByMonth: function() {
    var grouped = documents.groupBy(function(doc){
                    return this.get('date').getMonth() }); 

    this.byMonthCollection.reset(grouped);
  }
}

我想了很多,没有一个完美的答案,但这里是我的笔记(大脑垃圾),以防它们帮助/激发你的任何新想法:

显示(和自动更新)一个集合的最佳方式,该集合分为3个部分/组,例如本周、下周和即将到来的

  • 过滤视图外的集合:在控制器中创建已过滤的子集合,并将其传递给每个CollectionView。然后有两个选项可用于修改集合:
    • A) 直接修改3个子集合
      • 赞成:自动更新会起作用,CollectionView中不需要过滤逻辑,emptyView会起作用,很容易在每个部分的顶部都有一个计数

      • 缺点:我们必须在任何地方传递这3个集合,我们可能想要修改它们,并且在添加/删除事件时有这个额外的逻辑:
        if(event.time)我不认为有任何本地方法可以自动更新您的groupBy,因为它实际上不是主干网使用的东西(我认为这种方法更多是出于礼貌而添加的)。我也这么认为。我在想,我可以使用groupBy创建更小的、基于月份的集合,并使用CompositeView为它们创建集合。我想知道再次运行groupBy并从组中重置基于月份的集合是否会重新呈现整个视图,或者只是更新任何更改的内容?我不太了解木偶,也不太了解精确的st你的应用程序的结构,所以我不能说太多。我认为你的问题太具体了。