Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么backbone.js where函数返回一组模型?_Backbone.js_Backbone.js Collections - Fatal编程技术网

为什么backbone.js where函数返回一组模型?

为什么backbone.js where函数返回一组模型?,backbone.js,backbone.js-collections,Backbone.js,Backbone.js Collections,当我使用Backbone.Collection.where函数过滤集合时,我得到一个模型数组作为返回值,而不是其他过滤的集合对象。所以我不能用其他的收集函数 这种行为的目的是什么?其中不是唯一返回数组的方法其中返回一个新的数组,因为您肯定不希望它自动改变现有的集合。此外,很多时候,您可能希望以数组形式显示结果 无论出于何种原因,BB开发者决定最好返回一个新的数组,而不是一个新的集合。一种想法可能是,返回的数据可能会用于不同类型的集合。另一个原因可能是,您总是知道从其中一个方法返回什么。2+类型的

当我使用
Backbone.Collection.where
函数过滤集合时,我得到一个模型数组作为返回值,而不是其他过滤的集合对象。所以我不能用其他的收集函数


这种行为的目的是什么?

其中
不是唯一返回
数组的方法
其中
返回一个新的
数组
,因为您肯定不希望它自动改变现有的
集合
。此外,很多时候,您可能希望以
数组
形式显示结果

无论出于何种原因,BB开发者决定最好返回一个新的
数组
,而不是一个新的
集合
。一种想法可能是,返回的数据可能会用于不同类型的
集合
。另一个原因可能是,您总是知道从其中一个方法返回什么。2+类型的集合将始终从这些类型的方法返回
数组
,而不必尝试通过
instanceof
或其他不太可靠的方法进行检查

编辑

此外,您可以使集合以返回新的
集合的方式运行。创建基本集合以执行以下操作:

// Override the following methods
var override = ["where","find",...];
var collectionProto = Backbone.Collection.prototype;
BaseCollection = Backbone.Collection.extend({});
for (var key in collectionProto) {
    if (collectionProto.hasOwnProperty(key) && override.indexOf(key) > -1) {
        BaseCollection.prototype[key] = function () {
            return new this.constructor(collectionProto[key].apply(this, arguments);
        };
    }
}

请注意,您仍然可以在阵列上使用大多数下划线实用程序。下面介绍如何在筛选器()之后使用each()


_.each(MyCollection.filter(filter_fn(){})、each_fn(){})

我添加了一些额外的上下文,以使集合的行为也符合您的要求。