我正在尝试使用Javascript,Requirejs和Backbonejs创建一个Wordpress主题。
在索引路由中,我实例化一个新的postsCollection app.postsCollection = new Posts.Collection();
,它将包含所有WordPress帖子。然后,我运行.fetch()app.postsCollection.fetch( { success: ..., error: ... } );
以下是我的 modules / posts / collection.js 文件的代码:
define( function( require, exports, module ) {
"use strict";
var app = require( 'app' );
var PostModel = require( './model' );
var PostsCollection = Backbone.Collection.extend( {
model : PostModel,
url : app.jsonApi + "get_posts/",
parse: function( response ) {
return response.posts;
}
} );
module.exports = PostsCollection;
});
我想扩展定义var ImagePostModel = PostModel.extend( { ... } );
和var GalleryPostModel = PostModel.extend( { ... } );
的PostModel。然后,由于收集数据的帖子类型(图像或图库),我想在获取时使用特定模型。我怎么能这样做?
答案 0 :(得分:2)
通常,对于骨干属性,您可以直接使用返回对象的函数来指定对象,例如,您可以提供返回事件哈希对象的函数。模型属性也是如此。
您可以改为使用基于某些条件的函数返回相应的模型类型,而不是为集合model
指定模型。
通过使用返回模型的构造函数覆盖此属性,集合还可以包含多态模型。
提供的示例
var Library = Backbone.Collection.extend({
model: function(attrs, options) {
if (condition) {
return new PublicDocument(attrs, options);
} else {
return new PrivateDocument(attrs, options);
}
}
});