Подтвердить что ты не робот

Как разместить коллекцию в модели в Backbone.js?

Я хотел бы получить некоторое представление о том, как добавить структуру коллекции в модель. У моего простого приложения есть команды (например, командная модель и сбор команд), и каждая команда имеет кучу игроков (модели игроков и коллекций игроков). Таким образом, визуальная структура выглядит так:

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

и т.д.

Как создать такую ​​базовую программу? Вот как я планирую до сих пор: 1) У меня была бы Team Collection, в которой было бы несколько команд, свойство модели которых соответствует TeamModel. 2) Коллекция игроков, которая будет содержать все несколько игроков и свойство модели, соответствует модели PlayerModel.

Теперь я смущен относительно того, как я буду иметь коллекцию и модель команды, которые соответствуют коллекции и модели игрока. То есть согласно моему дизайну, третье отношение будет заключаться в том, что каждая команда будет иметь коллекцию игроков. Однако я не уверен, как это реализовать.

4b9b3361

Ответ 1

"Теперь я смущен относительно того, как я буду иметь коллекцию команд и модель, соответствовать коллекции и модели игрока. То есть, согласно моему дизайну, третья связь будет заключаться в том, что каждая команда будет иметь коллекцию игроков".

Просто добавьте атрибут в свою Командную модель, которая будет коллекцией игроков.

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

Теперь, заполнение данных - еще одна проблема, которая имеет множество решений. Но делать то, что дает вам сильную структуру.

Ответ 2

Вы можете сделать что-то вроде:

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

И затем, когда вы создаете экземпляры каждого и собираете данные с сервера, запустите маршрутизатор после заполнения всех коллекций. Он должен работать таким образом.