Backbone.Model save - 返回模型的子元素是数组而不是Backbone.Collection。

时间:2013-02-01 02:43:45

标签: javascript backbone.js

我的模型看起来像:

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对象。但是,它的子项是Array类型而不是Backbone.Collection。

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

1 个答案:

答案 0 :(得分:4)

这取决于您的服务器期望什么以及它响应的内容。 Backbone不知道属性items是一个Backbone Collection以及如何处理它。这样的事情可能会起作用,具体取决于你的服务器。

 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;
    }

});