2

我正在尝试使用 Javascript、Requirejs 和 Backbonejs 创建一个 Wordpress 主题。

在 index 路由中,我实例化了一个新的 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;

});

我的问题 :

我想扩展 PostModel 定义var ImagePostModel = PostModel.extend( { ... } );var GalleryPostModel = PostModel.extend( { ... } );. 然后,由于收集数据的帖子类型(图像或画廊),我想在获取时使用特定模型。我怎样才能做到这一点 ?

4

1 回答 1

2

一般来说,对于主干属性,您可以直接使用返回对象的函数而不是直接指定对象,例如,您可以提供返回事件哈希对象的函数。模型属性也是如此。

model您可以使用基于某些条件返回适当模型类型的函数,而不是为您的集合指定模型。

文档

集合还可以通过使用返回模型的构造函数覆盖此属性来包含多态模型。

和提供的例子

var Library = Backbone.Collection.extend({

  model: function(attrs, options) {
    if (condition) {
      return new PublicDocument(attrs, options);
    } else {
      return new PrivateDocument(attrs, options);
    }
  }

});
于 2013-11-07T19:33:25.167 回答