我嘗試使用骨幹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:也許吧。我對他們的情況不夠了解。這個答案更像是「如果你要這樣做,那就這樣做」。 –