Backbone.js Collection of Collections
backbone.js, javascript
Solution
You'd solve your problem by turning your `Playlist` from a collection into a model. If you think about it, a `Playlist` would probably have other attributes anyway (e.g. name) that wouldn't be settable on a collection.
`Playlists` would then be a collection of `Playlist` models (instead of collections), which should work without error.
var Track = Backbone.Model.extend({
//trackdata
});
var Playlist = Backbone.Model.extend({
model : Track
});
var Playlists = Backbone.Collection.extend({
url : "playlists",
model : Playlist
});
Problem
I'm trying to figure out how to make a Collection of collections with backbone.js. I'm pretty new to backbone. I have something like the following situation: ``` +---------------+ +------------------+ | Playlists | | Playlist | |---------------| 0..* |------------------| | +-------------->| Name | | | | | | | | | +---------------+ +-------+----------+ | | |0..* v +------------------+ | Track | |------------------| | Name | | Artist | | | +------------------+ ``` In code this looks similar to this: ``` var trackModel = Backbone.Model.extend({ //trackdata }); var playlistModel = Backbone.Collection.extend({ model : trackModel, url : "playlist" }); var playlistsModel = Backbone.Collection.extend({ url : "playlists", model : playlistModel //This pretty sure doesn't work like I want, because there is no model attribute for collections :S }); ``` However I always receive an error in the js console saying: ``` Uncaught TypeError: Object [object Object] has no method '_validate' ``` when I try to execute a function that triggers the validate (like add, fetch, ...) It makes no difference if i add the `validate` or `_validate` function to any of the collections or models. I believe this is because backbone.js doesn't support collections in collections. Is there another way that works? UPDATE: This is how it looks right now ``` var Track = Backbone.Model.extend({ //trackdata }); var Tracks = Backbone.Collection.extend({ model:Track; }); var Playlist = Backbone.Model.extend({ //name : ... tracks: new Tracks () }); var Playlists = Backbone.Collection.extend({ url : "playlists", model : Playlist }); ```