2013-02-20 3 views
2

В этом ассоциативном массиве AngularJS (массив пар ключей, значений) ng-repeat работает неправильно. Что не так?AngularJS Assoc Array Foreach

function TestCtrl($scope) { 
    $scope.list = []; 

    $scope.processSomeData = function(){ 
     $scope.list["testKey"]={}; 
     $scope.list["testKey"]["test"]="Test value"; 
    }; 
    $scope.processSomeData(); 
} 

<div ng-app> 
    <h2>Test</h2> 
    <div ng-controller="TestCtrl"> 
     <div ng-repeat="(key,value) in list"> 
      {{key}} 
      {{value.test}} 
     </div> 
    </div> 
</div> 

http://jsfiddle.net/ebZkg/

Спасибо!

ответ

11

Ваш «ассоциативный массив» должен быть Javascript Объект, а не массив Javascript. Вы не можете использовать js-массивы в AngularJS для ключей, пар/карт значений.

Изменить list на объект, и он будет работать:

$scope.list = {}; 
+1

На стороне записки, есть ли способ сортировки по ключу? –

+0

Нет прямого способа сделать это, но это возможно. Вам нужно будет создать свою собственную функцию сортировки и, скорее всего, дублировать данные. Простой пример: http://jsfiddle.net/bmleite/ebZkg/1/ – bmleite

+1

На самом деле вы можете просто использовать orderBy (на самом деле я просто понял, что это то, что вы сказали в любом случае) –