2013-11-29 8 views
0

Im немного застрял, я использую backbone.js, код ниже возвращает массив моделей, см. Изображение ниже.Доступ к массиву моделей?

//The array of objects 
var teamPlayers = this.players.where({team_id: team.get('id')}) 

players - это коллекция. Вместо того, чтобы говорить this.players.each(function(models){ //code here }) Я хочу сказать что-то вроде teamPlayers.each(function(models){ //code here }). Так что я могу связать две коллекцию соответствия я могу сделать их идентификаторы

enter image description here

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

Вот шаблон, который я пытаюсь достичь такого результата.

<script type="text/template" id="allTemplate"> 

    <% _.each(teams, function(team) { %> 

      <div class="<%= team.name %>"> 

      <h1><%= team.name %></h1> 

      <% var teamPlayers = _.where(players, {team_id: team.id}) %> 

       <% _.each(teamPlayers, function(player) { %> 
        <li> <%= player.name %> </li> 
       <% }); %> 

      </div> 

    <% }); %> 


</script> 

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

Extra: здесь является то, что код каждой коллекции выглядит

this.teams.each(function(team) { 
    var teamView = new TeamView({ model: team }); 
    var teamHtml = teamView.render().el; 
    this.$el.append(teamHtml); 

    var teamPlayers = this.players.where({team_id: team.get('id')}) 
    console.log(teamPlayers) 

    this.players.each(function(player) { 
     var playerView = new PlayerView({ model: player }); 

     var playerHtml = playerView.render().el; 
     this.$el.append(playerHtml); 
     console.log(player.toJSON()); 
    }, this); 

}, this); 

Edit: Я просто хотел бы добавить, я наткнулся на этом Backbone.js Uncaught TypeError: Object [object Array] has no method 'on' это своего рода имеет смысл, но я не могу понять, как применить это ответ на мой проект и то, как я создал свою модель.

ответ

1

_.where возвращает массив, а не Backbone.Collection, так очередь:

this.players.each(function(player) { 

в

_.each(teamPlayers, function(player) { 
+0

Ого, спасибо чувак! Я принял «this.players.each» из учебника. Это сработало, удивительно, как одна мелочь может выбросить все ваше приложение. –

Смежные вопросы