【问题标题】:The proper way to filter a backbone.collection by using Marionette.CompositeView使用 Marionette.CompositeView 过滤骨干网的正确方法
【发布时间】:2012-09-27 09:18:22
【问题描述】:

我有一个 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'

【问题讨论】:

    标签: javascript backbone.js marionette


    【解决方案1】:

    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 扩展而来的任何类型。我只是想用这个例子来说明它是一个集合的意义。

    【讨论】:

    • 有点不相关但是......如果您使用路由来传递过滤条件,则集合不一定准备好/获取以便在调用“初始化”时进行过滤?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多