【发布时间】:2013-02-01 11:05:29
【问题描述】:
我有一个看起来像这样的模型:
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 并自己初始化它?
【问题讨论】:
-
Backbone 默认情况下不支持集合的保存/同步,因此可能发生的情况是,在模型进行往返之后,结果 JSON 数组按原样使用。集合旨在成为
Models 的集合(用于管理它们自己的持久性)。如果 PlaylistItems 是聚合根的子项,那么您可能不应该从使用 Collection 开始。 -
我调用的是模型而不是集合上的保存。我不认为在保存期间加载一个模型集合的孩子是不合理的......你是说 Backbone 认为这是不好的做法吗?如果是这样,你知道为什么吗?这似乎是一个常见的 1 到 0+。