我的模型看起来像:
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并自己初始化?
答案 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;
}
});