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

时间:2012-09-27 09:18:22

标签: javascript backbone.js marionette

我有Marionette.CompositeView需要渲染一个集合 我想在fetchadd行动中过滤此收藏集 我尝试使用以下代码(1),但是我收到以下错误(2)。

任何想法,谢谢。


(1)

var myCompositeView = Marionette.CompositeView.extend({

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

});

(2)

// Uncaught TypeError: Object  has no method 'on'

1 个答案:

答案 0 :(得分:8)

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


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

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