2013-04-14 10 views
13

Ich hätte gerne einen Einblick, wie man eine Sammlung innerhalb eines Modells strukturieren würde. Meine einfache App hat Teams (also ein Teammodell und eine Sammlung von Teams) und jedes Team hat eine Menge Spieler (Spielermodell und Spielersammlungen). So eine visuelle Struktur ist es etwa so:Wie platziert man eine Sammlung in einem Modell in Backbone.js?

Team A 
    - Player 1 
    - Player 2 
    - Player 3 
Team B 
    - Player 1 
    - Player 2 

und so weiter ...

Wie würde eine Struktur, wie ein Rückgrat app? Hier ist, wie ich es bis jetzt plane: 1) Ich hätte eine Teamkollektion, die mehrere Teams halten würde, deren Modelleigenschaft dem TeamModel entspricht. 2) Eine Player Collection, die alle Multiplayer und Modelleigenschaften enthält, entspricht dem PlayerModel.

Jetzt bin ich verwirrt darüber, wie ich die Team Collection und Model, mit der Player Collection und Model entsprechen würde. I.e. Nach meinem Entwurf wäre eine dritte Beziehung, dass jedes Team eine Sammlung von Spielern haben würde. Ich bin mir jedoch nicht sicher, wie ich das umsetzen soll.

App.Models.Player = Backbone.Model.extend({}); 

App.Collections.Players = Backbone.Collection.extend({ 
    model: App.Models.Player, 
    url: 'players', 
    getTeam: function(idTeam){ 
     var gf = _.filter(this.models, function(model){ 
    return (
     model.get('idTeam') == idTeam 
    ); 
    }); 
     return gf; 
    } 
}); 

App.Models.Team = Backbone.Model.extend({ 
    players: players(this.get('id')) // asuming that players is an App.Collections.Players instance. 
}); 

App.Collections.Team = Backbone.Collection.extend({ 
    model: App.Models.Team, 
    url: 'teams' 
}); 

Und dann, wenn Sie die Instanzen von jedem und sammeln Daten von dem Server zu erstellen, starten Sie den Router einmal alle Sammlungen bevölkert wurden:

Antwort

15

"Jetzt bin ich verwirrt darüber, wie ich die Teamkollektion und Modell, mit der Player Collection und Model entsprechen würde. Dh nach meinem Design, eine dritte Beziehung wäre, dass jedes Team eine Sammlung von Spielern haben würde "

Fügen Sie Ihrem Team-Modell einfach ein Attribut hinzu, das eine Sammlung von Spielern sein würde.

Jetzt ist das Auffüllen der Daten ein anderes Problem, das viele Lösungen hat. Aber Dinge so zu tun, gibt dir eine starke Struktur.

+0

Dies hilft. Vielen Dank. –

+6

@ clockwork189 Btw, ich habe es nicht präzisiert, aber Sie können es nicht in die * defaults * setzen. Andernfalls teilen alle Ihre Instanzen dieselbe Sammlung. – Loamhoof

6

Man könnte so etwas wie zu tun. Es sollte so funktionieren.

Verwandte Themen