2015-01-05 2 views
0

Я делаю карточную игру с использованием AngularJS, и я хочу отображать игроков в порядке игры относительно позиции пользователя. Карты пользователя всегда находятся в отдельном div в нижней части экрана. Чтобы сохранить порядок воспроизведения по часовой стрелке, он должен показывать следующий игрок первым, затем следующий, затем следующий и т. Д. В настоящее время я использую директиву ng-repeat, но это всегда ставит игрока 1.Покажите игроков по порядку относительно позиции пользователя в массиве игроков

//- The Players 
    .row.center-block 
    .col-md-2(ng-if='player.id != p.id ', ng-repeat='p in game.players') 
     .row 
     .col-md-12 
      | {{p.name}} 
      span.glyphicon.glyphicon-heart(ng-repeat='a in range(p.lives) track by $index') 
     .col-md-12 
      .card.col-md-1(ng-repeat='card in p.hand track by $index') 
      | {{$index}} 

Как я могу получить один цикл массива игроков, начиная с объекта игрока? Моя теория состоит в повторении итерации дважды, сначала всех в массиве после ng-if='player.id != p.id ', затем все раньше. Можно ли начинать с определенного индекса?

ответ

0

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

$scope.otherPlayers = $scope.game.players.slice(x).concat($scope.game.players.slice(0,x)); 

И в моем HTML я изменил его на

.col-md-2(ng-if='player.id != p.id ', ng-repeat='p in otherPlayers') 

И это работало как шарм.

1

Используйте filter заказать список внутри нг-повтора

удалить

ng-if='player.id != p.id ' 

добавить

ng-repeat='p in game.players | orderBy: position' 
+0

Спасибо за внимание. Я не думаю, что был достаточно конкретным в моем вопросе. Я хочу, чтобы список игроков находился в порядке игры по отношению к пользователю. Скажем, что пользователь Player 2, div должны быть «Player 3, Player 4, Player 1» – Alex

+1

http://plnkr.co/edit/tHNpFgCws334dIHF2j3M?p=preview –

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