2013-04-14 16 views
13

私は、モデル内でどのようにコレクションを構造体に追加するかについていくつかの洞察をしたいと思います。私の単純なアプリにはチーム(チームモデルとチームのコレクション)があり、各チームには多数のプレーヤー(プレーヤーモデルとプレーヤーコレクション)があります。Backbone.jsのモデル内でコレクションを配置する方法は?

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

のように...

どのように一つの構造など基幹アプリになります。だから、の視覚的な構造はとても似ているのですか?これまでの計画は次のとおりです。 1)TeamModelに対応するモデルプロパティを持つ複数のチームを保持するチームコレクションがあります。 2)すべての複数のプレーヤーとモデルプロパティを保持するプレーヤーコレクションは、PlayerModelに対応します。

チームコレクションとモデルをどのように持っているのか、プレイヤーコレクションとモデルに対応するのは混乱します。私。私の設計によれば、第3の関係は、各チームが選手の集まりを持つということです。しかし、私はどのようにそれを実装するのか分からない。

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' 
}); 

そして、あなたはそれぞれのインスタンスを作成し、サーバーからデータを収集する際、一度すべてのコレクションが読み込まれているルータを起動します。

答えて

15

"私はチームコレクションとモデルをどのように持っているのか混乱しています。私のデザインによれば、3番目の関係は、各チームがプレーヤーの集まり。 "

チームモデルにプレーヤーのコレクションとなる属性を追加するだけです。

var Team = Backbone.Model.extend({ 
    initialize: function() { 
    // assuming Players a collection of players 
    this.set('players', new Players()); 
    } 
}); 

ここでデータを入力することは、多くの解決策があります。しかし、そのようなことをすることは、あなたに強い構造を与えます。

+0

これは役立ちます。ありがとう。 –

+6

@ clockwork189 Btw、私はそれを精密化していないが、* defaults *に入れることはできない。そうしないと、すべてのインスタンスが同じコレクションを共有します。 – Loamhoof

6

あなたのような何かを行うことができます。 それはそのように動作するはずです。

関連する問題