使用Marionette.CompositeView过滤backbone.collection的正确方法

Lor*_*ard 5 javascript backbone.js marionette

我有一个Marionette.CompositeView需要渲染集合.
我想过滤这个集合fetchadd动作.
我尝试使用以下代码(1)但我收到以下错误(2).

任何想法,谢谢.


(1)

var myCompositeView = Marionette.CompositeView.extend({

    initialize: function () {
        this.collection = app.taskCollection.where({type: 'todo'});
    }

});
Run Code Online (Sandbox Code Playgroud)

(2)

// Uncaught TypeError: Object  has no method 'on'
Run Code Online (Sandbox Code Playgroud)

Der*_*ley 8

Marionette的CompositeView和CollectionView都希望该collection设置是一个有效的Backbone.Collection.whereBackbone的集合上的方法不返回Backbone.Collection,它返回一个数组.所以你必须围绕结果包装一个集合:


initialize: function(){
  var filtered = app.taskCollection.where({type: 'todo'});
  this.collection = new Backbone.Collection(filtered);
}
Run Code Online (Sandbox Code Playgroud)

当然,您可以使用从Backbone.Collection扩展的任何类型.我只想说明它是这个例子的集合.