2

我有一个看起来像的模型:

var Playlist = Backbone.Model.extend({
    defaults: function() {
        return {
            id: null,
            items: new PlaylistItems()
        };
    }
});

其中 PlaylistItems 是 Backbone.Collection。

创建播放列表对象后,我调用 save。

playlist.save({}, {
    success: function(model, response, options) {
        console.log("model:", model, response, options);
    },
    error: function (error) {
        console.error(error);
    }
});

在这里,我的模型是一个 Backbone.Model 对象。但是,它的子项 items 是 Array 类型,而不是 Backbone.Collection。

这是出乎意料的行为。我错过了什么吗?或者,我是否需要手动将我的数组传递到一个新的 Backbone.Collection 并自己初始化它?

4

1 回答 1

4

这有点取决于您的服务器期望什么以及它响应什么。Backbone 不知道该属性items是一个 Backbone 集合以及如何处理它。像这样的东西可能会起作用,具体取决于您的服务器。

 var Playlist = Backbone.Model.extend({
    defaults: function() {
        return {
            id: null,
            items: new PlaylistItems()
        };
    },
    toJSON: function(){
        // return the json your server is expecting.
        var json = Backbone.Model.prototype.toJSON.call(this);
        json.items = this.get('items').toJSON();
        return json;
    },
    parse: function(data){
        // data comes from your server response
        // so here you need to call something like:
        this.get('items').reset(data.items);
        // then remove items from data: 
        delete data.items;
        return data;
    }

});
于 2013-02-01T03:05:29.990 回答