我正在创建一个Backbone模型,里面有一个子Backbone模型:
console.log("inside add item, video:", video instanceof Backbone.Model);
var playlistItem = new PlaylistItem({
video: video,
title: video.get('title')
});
之后,我保存了它:
playlistItem.save({}, {
success: function() {
console.log("Successfully saved.");
playlistItem.get('video').get('title');
}
});
在这个例子中,我遇到一个错误 - 在调用save之后,视频不是Backbone.Model的实例。为什么呢?
答案 0 :(得分:1)
我认为您需要覆盖parse
和toJSON
。
toJSON: function() {
var json = Backbone.Model.prototype.toJSON.call(this);
// replace backbone model with json.
json.video = this.get('video').toJSON();
return json;
},
parse: function(data) {
// take json of video and set into model.
this.get('video').set(data.video);
delete data.video;
return data;
},
如果你不像这样解析json数据,骨干网将从json获取'video'对象并覆盖你的Backbone模型。