fey*_*fey 3 backbone.js backbone.js-collections
当我使用该Backbone.Collection.where函数来过滤集合时,我得到一个模型数组作为返回值,但不是另一个过滤的集合对象.所以我不能使用其他收集功能.
这种行为的目的是什么?
where不是唯一返回的方法Array.where返回一个新的,Array因为你绝对不希望它Collection自动改变现有的.此外,很多时候您可能希望结果Array形式.
无论出于何种原因,BB开发者决定返回一个新的Array而不是一个新的更好Collection.一种想法可能是,也许返回的数据将用于不同类型Collection.另一个原因可能是您始终知道从这些方法之一返回的内容.2种类型的集合将始终Arrays从这些类型的方法返回,而不是必须尝试通过instanceof或不可靠的其他东西进行检查.
编辑
此外,您可以使您的集合以您返回新的方式运行Collections.创建一个基本集合来执行以下操作:
// 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);
};
}
}
Run Code Online (Sandbox Code Playgroud)
而不是扩展Backbone.Collection,扩展BaseCollection.
| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |