如何放置集合中Backbone.js的模型中?(How to place a collection

2019-08-22 21:01发布

我想就如何将一个模型中添加结构集合一些见解。 我简单的应用程序有球队(所以团队模式和团队的集合),每队有一堆的玩家(玩家模型和球员的集合)。 所以,它的视觉结构如下所示:

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

等等...

一个人怎么会结构,主干应用程序? 这里是我正打算这么远:1)我想有一个团队集合,将持有的多个团队,其模型属性对应于TeamModel。 2)玩家收集,将持有的所有多个玩家和模型属性对应于PlayerModel。

现在我很困惑,我怎么会对团队收集和型号,对应与玩家收集和模型。 即,根据我的设计,第三个关系是每个团队将有玩家的集合。 但是我不确定如何实现这一点。

Answer 1:

现在我很困惑,我怎么会对团队收集和模型,带玩家收集和模式。即相当于按照我的设计,第三个关系是每个团队将有玩家的集合。”

只需添加到您的团队模型的属性,它会是玩家的集合。

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

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



Answer 2:

You could do something like:

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

And then, when you create the instances of each and collect data from the server, start the router once all collections have been populated. It should work that way.



文章来源: How to place a collection within a model in Backbone.js?