javascript - Backbone.js Colección de colecciones
(1)
Resolverás tu problema convirtiendo tu Playlist
de Playlist
de una colección en un modelo. Si lo piensas bien, una Playlist
probablemente tenga otros atributos de todos modos (por ejemplo, nombre) que no serían configurables en una colección.
Playlists
serían una colección de modelos de Playlist
(en lugar de colecciones), que deberían funcionar sin errores.
var Track = Backbone.Model.extend({
//trackdata
});
var Playlist = Backbone.Model.extend({
model : Track
});
var Playlists = Backbone.Collection.extend({
url : "playlists",
model : Playlist
});
Estoy intentando descubrir cómo hacer una Colección de colecciones con backbone.js. Soy bastante nuevo en la columna vertebral. Tengo algo así como la siguiente situación:
+---------------+ +------------------+
| Playlists | | Playlist |
|---------------| 0..* |------------------|
| +-------------->| Name |
| | | |
| | | |
+---------------+ +-------+----------+
|
|
|0..*
v
+------------------+
| Track |
|------------------|
| Name |
| Artist |
| |
+------------------+
En el código esto se ve similar a esto:
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
});
Sin embargo, siempre recibo un error en la consola js diciendo:
Uncaught TypeError: Object [object Object] has no method ''_validate''
cuando intento ejecutar una función que activa la validación (como agregar, recuperar, ...)
No _validate
si agrego la función validate
o _validate
a cualquiera de las colecciones o modelos.
Creo que esto se debe a que backbone.js no admite colecciones en colecciones. ¿Hay alguna otra manera que funcione?
ACTUALIZAR:
Así es como se ve ahora
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
});