我尝试使用骨干js创建集合集合时遇到了isssue问题。 下面是代码:骨干js集合问题
模型和类别:
var Track = Backbone.Model.extend({
defaults : {
title : ""
}
})
var TrackCollection = Backbone.Collection.extend({
model : Track,
})
var Playlist = Backbone.Model.extend({
defaults : {
name : "",
tracks : new TrackCollection,
}
})
var PlaylistCollection = Backbone.Collection.extend({
model : Playlist,
})
创作播放列表集合的:
var playlists = new PlaylistCollection;
// create and push the first playlist
playlists.push({ name : "classic" });
// create and push a track in the playlist just created
playlists.last().get("tracks").push({ title : "fur elise" });
// create and push the second playlist
playlists.push({ name : "c2c" });
// create and push a track in the playlist just created
playlists.last().get("tracks").push({ title : "fuya" });
// display first playlist
console.log(JSON.stringify(playlists.at(0).toJSON()))
// display second playlist
console.log(JSON.stringify(playlists.at(1).toJSON()))
这里是输出:
{"name":"classic","tracks":[{"title":"fur elise"},{"title":"fuya"}]}
{"name":"c2c","tracks":[{"title":"fur elise"},{"title":"fuya"}]}
问题是,正如我们在输出中可以看到的那样,这两个播放列表中有两个曲目“fur elise”和“fuy”一个”。
所以我的问题是为什么?我应该怎么做才能在名为“c2c”的第二个播放列表中仅在名为“classic”和“fuya”的第一个播放列表中具有“fur elise”?
谢谢。
你是完全正确的,我认为它是在实例化的默认值副本。无论如何,非常感谢您的回复! – Kraoz
这是非常好的信息,非常贴切,但是在初始化方法中创建一个新的集合可能更简单,更清楚吗? –
@AlexMills:也许吧。我对他们的情况不够了解。这个答案更像是“如果你要这样做,那就这样做”。 –