2013-12-12 104 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

謝謝! '編輯(播放器)'對我來說太好了 – 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; 
     } 
    } 
}; 

和NG-重複內:

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

<button ng-click="edit(getRealId(player.$$hashKey))" class="btn btn-primary"><span class="glyphicon glyphicon-edit"></span></button>