2013-12-12 2 views
0

я в есть данные:angularJS неправильный ключ в повторителе

[Object, Object, Object] 
    0: Object 
    $$hashKey: "007" 
    amount: "123111" 
    name: "test" 
    number: "5" 
    position: "ttt" 
    1: Object 
    $$hashKey: "006" 
    amount: "123111" 
    name: "test4" 
    number: "4" 
    position: "поз" 
    2: Object 
    $$hashKey: "005" 
    amount: "34555" 
    name: "еее" 
    number: "1" 
    position: "вапвап" 

и я есть ретранслятор в HTML:

<tr ng-repeat="(key, player) in players | orderBy:'number'"> 
    <td>{{key}} - {{player.number}}</td> 
    <td>{{player.name}}</td> 
    <td>{{player.position}}</td> 
    <td>{{player.amount}}</td> 
    <td> 
     <button ng-click="edit(key)" class="btn btn-primary"><span class="glyphicon glyphicon-edit"></span></button> 
     <button ng-click="delete(key)" class="btn btn-danger"><span class="glyphicon glyphicon-floppy-remove"></span></button> 
    </td> 
</tr> 

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

0 - 1 еее вапвап 34555  
1 - 4 test4 поз 123111  
2 - 5 test ttt 123111 

, но мне нужно:

2 - 1 еее вапвап 34555  
1 - 4 test4 поз 123111  
0 - 5 test ttt 123111 
+1

Где 'key' приходит? Он не определен в структуре объекта. –

+1

Почему бы не просто «редактировать (плеер)»? – vittore

+0

Спасибо! 'edit (player)' это слишком хорошо для меня – user1005180

ответ

0

Вы не можете. Порядок значений списка изменяется, что означает, что вы получаете новые значения для каждого индекса перед просмотром его с помощью ng-repeat. Вы должны установить индекс как свойство игрока. Затем используйте это свойство.

for(var i in players) { 
    players[i].index = i; 
} 
+0

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

+0

Я думаю, что я могу использовать свойство $$ hashKey (это уникальное) - для ключа поиска в массиве игроков для текущего игрока внутри ng-repeat. К сожалению, мне не очень удобно изменять структуру данных. Спасибо в любом случае. – user1005180

0
$scope.getRealId = function(hashKey) { 
    for (var i in $scope.players) { 
     if ($scope.players[i].$$hashKey === hashKey) { 
      return i; 
     } 
    } 
}; 

и внутри нг-повтора:

{{getRealId(player.$$hashKey)}} 

или

<button ng-click="edit(getRealId(player.$$hashKey))" class="btn btn-primary"><span class="glyphicon glyphicon-edit"></span></button> 
Смежные вопросы