How to place a collection within a model in Backbone.js?

前端 未结 2 2163
予麋鹿
予麋鹿 2021-02-19 17:48

I would like some insight on how one would add structure a collection within a model. My simple app has teams (so a team model and collection of teams) and each team has a bunch

相关标签:
2条回答
  • 2021-02-19 18:14

    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.

    0 讨论(0)
  • 2021-02-19 18:19

    "Now I am confused as to how I would have the Team Collection and Model, correspond with the Player Collection and Model. I.e. according to my design, a third relationship would be that each team would have a collection of players."

    Simply add an attribute to your Team Model that'd be a collection of players.

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

    Now, populating the data is another problem which has a lot of solutions. But doing things that way gives you a strong structure.

    0 讨论(0)
提交回复
热议问题