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

标签 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'

最佳答案

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

关于javascript - 使用 Marionette.CompositeView 过滤 backbone.collection 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12618025/

相关文章:

javascript - Backbone 模型验证

javascript - 在窗口大小调整时更改主干 View 模板

javascript - AngularJS $http 意外的 token 冒号

javascript - 创建 OneDrive 文件夹时如何修复 BadRequest 错误 "Unable to read JSON request payload"?

javascript - 达到限制时的本地存储、限制和数据过期

javascript - 使用更多属性更新模型 (backbone.js)

javascript - Backbone 重构模型

javascript - 将脚本与 requirejs 解耦/防止 adBlocker 停止下载

marionette - 在 Marionette 的复合 View 中获取 "Missing ' itemViewcontainer'"错误

javascript - 在哪里存储有关已执行内容迁移的信息?