Próbuję dowiedzieć się, jak utworzyć kolekcję kolekcji z backbone.js. Jestem całkiem nowy w kręgosłupie. Mam coś podobnego do następującej sytuacji:Kolekcja kolekcji Backbone.js
+---------------+ +------------------+
| Playlists | | Playlist |
|---------------| 0..* |------------------|
| +-------------->| Name |
| | | |
| | | |
+---------------+ +-------+----------+
|
|
|0..*
v
+------------------+
| Track |
|------------------|
| Name |
| Artist |
| |
+------------------+
W kodzie wygląda to mniej więcej tak:
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
});
Jednak zawsze komunikat o błędzie w konsoli js mówiąc:
Uncaught TypeError: Object [object Object] has no method '_validate'
kiedy Próbuję uruchomić funkcję, która wyzwala sprawdzanie poprawności (np. Dodawanie, pobieranie, ...)
It m nie ma różnicy, jeśli dodaję funkcję validate
lub _validate
do dowolnej kolekcji lub modelu.
Uważam, że tak jest, ponieważ backbone.js nie obsługuje kolekcji w kolekcjach. Czy istnieje inny sposób, który działa?
UPDATE:
Jak to wygląda teraz
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
});
Wygląda docs szkieletowe obejmują obecnie rozdział poświęcony zagnieżdżonych modeli i kolekcji, bardzo podobnej do przykładu tutaj: http://backbonejs.org/#FAQ-nested –
pierwsze - Cieszę się rozwiązać problem. Mam nadzieję, że będzie to odpowiedź dla niektórych innych, ale twój problem wynika z błędnie zdefiniowanego modelu danych - nie ma "list odtwarzania" (masz po prostu wiele obiektów listy odtwarzania, które są zgrupowane w jednym miejscu), twoje dane zawierają tylko "listę odtwarzania" i " track ", a playlista relacji 1 może mieć wiele ścieżek. W twoim prostym (rozwiązanym) przykładzie ten wzór jest wyraźnie widoczny. – Dainius