2013-12-01 4 views
0

Я поначалу занимался сложными вещами и не мог понять, как создать список в списке с помощью backbone.js. Я, наконец, получил его, просто создав представление элемента списка для всех игроков в моем приложении. Затем создайте представление для всех команд внутри моего приложения.Хорошо добавить вид внутри представления?

Я «склеил» или «добавил» их вместе, создав представление приложения, которое их объединяет, есть все утверждения для обоих, перед тем как два представления были добавлены в корневой вид приложения, я добавил элемент списка игроков просмотрите представление команды. Позволь мне показать тебе.

Вот мой метод визуализации внутри вида приложения:Я просто не уверен, что это плохая идея или нет, я имею в виду, есть гораздо более эффективные способы, но это единственный метод, который я имел успех с. Это действительно имеет смысл для меня, я могу запускать события на каждый вид без проблем

render: function() { 
    var self = this; 

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

     var teamPlayers = this.players.where({team_id: team.get('id')})   
     _.each(teamPlayers, function(player) { 
      var playerView = new PlayerView({ model: player }); 
      var playerHtml = playerView.render().el; 

      $(teamHtml).append(playerHtml); 

     }, this); 

     this.$el.append(teamHtml); 

    }, this); 

    return this; 
}, 

Я спросил об этом и сказали, что было бы лучше, чтобы создать суб-представления, а я уверен, что это структура подзаголовка? Есть ли какие-либо дыры в этом методе, поэтому я хотел бы объяснить, почему этот метод плохой и как я могу его улучшить. И последнее, но не менее важное: я забочусь о чистом поддерживаемом коде, но самое главное, что у меня есть teams оберните его уважаемый players с результатом HTML, как показано ниже.

<div> 
    <ul class="lakers"> 
     <li>Kobe</li> 
     <li>Pau</li> 
    </ul> 
    <ul class="spurs"> 
     <li>Tony</li> 
     <li>Tim</li> 
    </ul> 
</div> 

Опять же идентификатор, как какая-то конструктивная критика, в основном ПРОФИ & CONS с подключением двух представлений, как это. Мне просто нужно спросить, прежде чем двигаться дальше. Я хочу убедиться, что я не попадаю в плохие привычки или не создаю проблем в своем коде, когда я начинаю расширять его, я уверен, что вы это понимаете.

ответ

0

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

Да, вы знали это, и TeamView - подзадача. Однако это «зомби-взгляд». Делает ли оно что-нибудь само? Представление должно отвечать за предоставление самого себя, включая добавление его прямых под-представлений, но , не зная, как отображать его под-виды, то есть вы должны передать коллекцию players в TeamView и переместить следующую логику в TeamView:

var teamPlayers = this.players.where({team_id: team.get('id')})   
    _.each(teamPlayers, function(player) { 
     var playerView = new PlayerView({ model: player }); 
     var playerHtml = playerView.render().el; 

     $(teamHtml).append(playerHtml); 

    }, this); 
+0

О, вы видите, я попытался это, но смутился о том, как написать 'var teamPlayers = this.players.where ({team_id: team.get ('id')})' ну, я все еще, 'team.get' будет неопределенным. 'teamPlayers' работает только тогда, когда он внутри каждого командного цикла. –

+0

Также путают, как бы я тренировал команды, есть 4 команды, которые имеют около 5-6 игроков. Может быть, я тупой и пропуская что-то простое, но это доходит до меня. –

+0

Я знаю, что сложно понять, что делает команда teamPlayers, но на модели игроков есть атрибут 'team_id', который должен соответствовать соответствующей команде. 'team.get ('id')' может возвращать 1, 2, 3 или 4 (4 команды), тогда он добавит игроков с командой 'team_id' 1-4 к своей уважаемой команде. В этом все дело в том, чтобы смотреть, чтобы обернуть игроков и связать их. –

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