13

我想了解如何在模型中添加结构集合。我的简单应用程序有团队(即团队模型和团队集合),每个团队都有一堆玩家(玩家模型和玩家集合)。所以它的视觉结构是这样的:

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

等等...

如何构建这样一个主干应用程序?到目前为止,我的计划如下: 1) 我将拥有一个团队集合,它将包含多个团队,其模型属性对应于 TeamModel。2) 一个玩家集合,它将包含所有多个玩家,并且模型属性对应于 PlayerModel。

现在我很困惑如何让 Team Collection 和 Model 与 Player Collection 和 Model 相对应。即根据我的设计,第三种关系是每支球队都有一组球员。但是我不确定如何实现它。

4

2 回答 2

15

现在我很困惑如何拥有 Team Collection 和 Model,与 Player Collection 和 Model 相对应。也就是说,根据我的设计,第三种关系是每个团队都有一个球员集合。

只需向您的团队模型添加一个属性,该属性将是一组玩家。

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

现在,填充数据是另一个有很多解决方案的问题。但是以这种方式做事会给你一个强大的结构。

于 2013-04-14T11:17:52.217 回答
6

您可以执行以下操作:

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

然后,当您创建每个实例并从服务器收集数据时,在填充所有集合后启动路由器。它应该这样工作。

于 2013-04-14T01:24:06.083 回答