javascript - Backbone.Collection 获取第一个 n 作为新集合

标签 javascript backbone.js typescript backbone.js-collections

我有一个 Backbone.Collection,其设置如下:

let col = new Backbone.Collection();

let model1 = new Backbone.Model();
model1.set('name', 'first');
col.add(model1);

let model2 = new Backbone.Model();
model2.set('name', 'second');
col.add(model2);

let model3 = new Backbone.Model();
model3.set('name', 'third');
col.add(model3);

当我尝试使用以下命令从集合中选择前 2 个模型时:

let firstTwo = col.first(2);

firstTwo 包含 model1model2 作为数组。

如何将前两个作为 Backbone.Collection 获取,而不需要手动将它们全部添加到新集合中?

最佳答案

您必须创建一个新集合并添加它们。好消息是创建新集合非常便宜,并且模型实例在完整集合和部分集合中都是相同的。

集合自动内置了一些 Underscore 方法。但这些方法都返回 Model 对象的数组。如果您想获取 Collection 实例,最好的选择是在 Collection 类上创建另一个方法。但是,您仍然可以使用下划线方法进行过滤。

var MyCollection = Backbone.Collection.extend({
    // ...
    firstAsCollection: function(numItems) {
        var models = this.first(numItems);
        return new MyCollection(models);
    }
});

关于javascript - Backbone.Collection 获取第一个 n 作为新集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36337333/

相关文章:

javascript - 冒泡由禁用元素触发的事件

javascript - Backbone.js View 的适当粒度是多少?

typescript - 如何声明具有精确字段和任何额外属性的 TypeScript 对象接口(interface)

javascript - CORS 在 http 服务器上失败

javascript - 文件元数据未在 Firestore 存储中更新

javascript - "all"事件的一个好的用例是什么?

javascript - 什么是 <%= ... %>

Javascript 类未在 Visual Studio Code 中获取 TypeScript 声明文件

javascript - TypeScript:访问对象上的未定义键时返回的类型错误?

javascript - 有没有办法将此 Promises 调用重构为 "best coding practices"版本?